Анимация заканчивается на первом кадре - PullRequest
0 голосов
/ 13 января 2011

Я играю анимацию так:

- (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 Ответ

3 голосов
/ 13 января 2011

+ (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];

Таким образом, после завершения анимации будет вызван метод mySelector объекта targetObject. Если вы хотите передать некоторые данные через обратный вызов и / или отправителя, используйте действия CCCallFuncN или CCCallFuncND

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...