我像这样播放动画:
- (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;
}
一切正常,唯一的问题是动画停在第一帧而不是最后一帧。我怎么能在最后一个完成呢?还有,我怎么知道动画已经完成了?
答案 0 :(得分:3)
+ (id) actionWithAnimation:CCAnimation *) a restoreOriginalFrame:(BOOL) b
这是CCAnimate行动的一种方法。把第二个参数放到NO
在你的情况下
CCAction *goldenExplosionAction = [CCAnimate actionWithAnimation:ani restoreOriginalFrame:NO];
要理解动画已完成,请创建一个回调,这将在动画之后调用:
id animation = [CCAnimate actionWithAnimation: someAnimation];
id callback = [CCCallfunc actionWithTarget: targetObject selector: @selector(mySelector)];
id sequence = [CCSequence actions: animation, callback, nil];
[mySprite runAction: sequence];
因此在动画完成后,将调用targetObject的mySelector方法。 如果你想通过回调传递一些数据和/或发送者使用CCCallFuncN或CCCallFuncND动作