まだ、cocos2dを始めたばかりの頃に開始したプロジェクトだったので、今見るとなんじゃこりゃ?なコードに時々ぶつかり、寒い思いをします。
Zオーダーを変更していたつもりだったコードはこちら。
sprite.zOrder = newDepth; // ×まねしちゃだめ!セッター側で良いこと処理してくれるだろうと思っても、とくに変化ありません。
正しくは、こちら。
[parentNode reorderChild:sprite z:newDepth];spriteを格納している親ノードにreorderChild:を呼んでやります。
ついでに子ノードの、親ノード間移行の方法は、以下のようになります。
[sprite removeFromParentAndCleanup:NO]; [newParentNode addChild:sprite z:theDepth];一旦、removeFromParentAndCleanup:で親ノードを抜けてから、新しい親ノードにaddChild:します。
注意点としてはremoveFromParentAndCleanup:のパラメータにNOを渡しているところでしょうか。YESとすると、spriteに設定しているアクションやスケジュールがクリーンアップされてしまいます。
同じようなメソッドで、removeFromParentがありますが、こちらは単に、removeFromParentAndCleanup:YESを呼んでいるだけなのでご注意下さい。
0 件のコメント:
コメントを投稿