动画在第一帧完成

时间:2011-01-13 15:53:01

标签: iphone animation cocos2d-iphone

我像这样播放动画:

- (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;     
}

一切正常,唯一的问题是动画停在第一帧而不是最后一帧。我怎么能在最后一个完成呢?还有,我怎么知道动画已经完成了?

1 个答案:

答案 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动作