LevelHelperで配置してないLHSpriteをSpriteHelperから読み込んで配置とか

前に、SpriteHelperだけのスプライト表示
http://marchenterprise.net/2013/06/16/
でBatchNodeに登録する方法で作ってたんだけど、LHSpriteのAnimationさせられないじゃんーって。調べたらLHSpriteに追加することができたー。なんだこっちのほーが簡単や。。

参考 : LHSprite Classリファレンス


    //
    //LHSpriteの配置とアニメと移動
    //

    //スクリーンサイズ取得
    CGSize screenSize = [[CCDirector sharedDirector] winSize];

    //新しいLHSpriteつくるぞ
    LHSprite *itemObj;
    //LevelHelperLoaderのcreateSpriteWithName使って、SpriteHelperのSpriteName, SheetName, pshsファイルを指定
    //createしたらmainLHLayerにすぐ配置されるみたい
    itemObj = [loader createSpriteWithName:@"item_scroll_propeller1"
                                        fromSheet:@"item"
                                        fromSHFile:@"PiyoUP.pshs"];
    //SpriteHelperで作ったAnimationのAnimationNameとpshsファイルを指定
    [itemObj prepareAnimationNamed:@"item_scroll_propeller" fromSHScene:@"PiyoUP.pshs"];
    //アニメーションもすぐ開始しちゃう
    [itemObj playAnimation];
    //消すときのためにタグ指定
    [itemObj setTag:TAG_ITEM];
    //表示位置を画面上に
    [itemObj setPosition:ccp((itemObj.textureRect.size.width/2)+(CCRANDOM_0_1()*(screenSize.width-itemObj.textureRect.size.width)),screenSize.height+(itemObj.textureRect.size.height/2))];
    
    //移動アクション
    //画面下に5秒でツーーってうごく
    CCMoveTo *itemMove = [CCMoveTo actionWithDuration:5 position:ccp(itemObj.position.x,-itemObj.textureRect.size.height/2)];

    //アクション終わったら自分でremoveSelfするようにする
    //CCSendMessage参考 : http://blog.seasons.cc/entry/20110604/1307180765
    CCSendMessages *itemRemove = [CCSendMessages actionWithTarget:itemObj];
    [[itemRemove addMessage] removeSelf];
    //移動して削除するアクション行列に登録
    CCSequence *itemSeq = [CCSequence actions:itemMove,itemRemove, nil];
    //アクション開始
    [itemObj runAction:itemSeq];

アクションが終わったりしたときを知りたかったり、該当のLHSpriteが画面にいるのかどうか調べるときは、
メインレイヤーからタグで呼び出してnilがどうかでお調べしてます。


            //
            //アイテムオブジェクトをクリア
            //

            //メインレイヤー呼び出し
            LHLayer *mainLayer = [loader layerWithUniqueName:@"MAIN_LAYER"];
            //メインレイヤーに配置されてるモノをタグで呼び出し
            CCNode *node = [mainLayer getChildByTag:TAG_ITEM];
            //nilでない=存在するかチェック
            if (node != nil) {
                //存在してたら削除
                [(LHSprite *)node removeSelf];
            }

LevelHelperで配置してないLHSpriteをSpriteHelperから読み込んで配置とか
トップへ戻る