2011-01-13 15 views
0

を終了:アニメーションは、私はこのようなアニメーションを再生する最初のフレームに

- (CCSprite *)explodeWithBatchNode:(CCSpriteBatchNode *)batchNode andAnimation:(CCAnimation *)ani 
{  
    CCSprite *explosionSprite = [CCSprite spriteWithTexture:batchNode.texture rect :CGRectMake(0, 0, 154,119)]; 

    CCAction *goldenExplosionAction = [CCAnimate actionWithAnimation:ani]; 
    [explosionSprite runAction:goldenExplosionAction]; 

    return explosionSprite;  
} 

すべてが正常に動作し、唯一の問題は、アニメーションではなく、最後の最初のフレームで停止していることです。どのようにして最後のアニメーションを完成させることができますか?また、アニメーションが終了したことをどのように知ることができますか?

答えて

3

+ (id) actionWithAnimation:CCAnimation *) a restoreOriginalFrame:(BOOL) b

それはCCAnimateアクションの方法です。アニメーションがあるの後にそう

id animation = [CCAnimate actionWithAnimation: someAnimation]; 
id callback = [CCCallfunc actionWithTarget: targetObject selector: @selector(mySelector)]; 
id sequence = [CCSequence actions: animation, callback, nil]; 
[mySprite runAction: sequence]; 

:ちょうどこのようなアニメーションの後に呼び出されるコールバックを作成するアニメーションが終了した理解するためにあなたのケース CCAction *goldenExplosionAction = [CCAnimate actionWithAnimation:ani restoreOriginalFrame:NO];

でNO

に2つ目の引数を置きます完了したtargetObjectのmySelectorメソッドが呼び出されます。 コールバックおよび/または送信側でデータを渡す場合は、CCCallFuncNまたはCCCallFuncNDアクションを使用してください。

+0

restoreOriginalFrameは推奨されていません。さて、次のようにします:ani.restoreOriginalFrame = YES;それを実行する前に。 – Jason

関連する問題