前に、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から読み込んで配置とか
