Было бы намного проще разместить все анимации на одном листе спрайта, так как, если ваш спрайт использует CCBatchnode для выполнения этого метода рисования, вы бы удалили его как дочерний с 1 листа и прочитали егок другому.
В своем подклассе CCSprite установите некоторые CCAction в качестве переменных экземпляра.
В методе инициализации запишите эти действия и сохраните их в переменных экземпляра.
Затемкогда вы хотите использовать анимацию, скажите своему спрайту, чтобы она запускалась.
Например,
NSMutableArray *smileFrames = [NSMutableArray array];
[smileFrames addObject:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"character_smile.png"]];
[smileFrames addObject:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"character_smile2.png"]];
[smileFrames addObject:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"character_smile3.png"]];
CCAnimation *smileAnim = [CCAnimation
animationWithFrames:smileFrames delay:0.2f];
self.smileAction = [CCSequence actions:
[CCAnimate actionWithAnimation:smileAnim restoreOriginalFrame:NO],
[CCCallFunc actionWithTarget:self selector:@selector(smileFinished)],
nil];
Тогда вы просто используете ..
[sprite runAction:smileAction];
Я добавилCCCallFunc до конца анимации, так как вы можете захотеть вернуться к неактивной анимации после ее завершения.
Не забудьте отменить любые сохраненные действия, когда спрайт освобожден.