私は 2 つCCSprite
の を同時にアニメーション化する単純な cocos2d ゲームを開発しています。この目的のためにCCAction
、次のようにそれぞれの CCSprite に s を設定するだけです。
[first runAction:[CCMoveTo actionWithDuration:1 position:secondPosition]];
[second runAction:[CCMoveTo actionWithDuration:1 position:firstPosition]];
次のステップを実行できるように、アニメーションが完了するまで待ちたいと思います。これらのアニメーションが終了するまでどのように待つ必要がありますか?
実際には 2 つのメソッド呼び出しがあります。最初の呼び出しは上記のコードを介してオブジェクトをアニメーション化し、2 番目の呼び出しは他のアニメーションを行います。
最初のアニメーションが完了するまで、2 番目のメソッド呼び出しを遅らせる必要があります。(CCCallBlock
最初のメソッドと同じ呼び出し元から 2 番目のメソッドを呼び出したいので、ブロックを使用したくありません。
編集
私はこれを試しました..
__block BOOL moving = YES;
[second runAction:[CCSequence actions:[CCMoveTo actionWithDuration:1 position:firstPosition], [CCCallBlockN actionWithBlock:^(CCNode *node){
CCLOG(@"\n\n\n\n\n\n\n\nMovement Finished\n\n\n\n\n\n\n\n");
moving = NO;
}],nil]];
while(moving);
しかし、CCCallBlock
決して呼び出されないため、永遠にwhile
ループに陥ります=/