Было много путаницы по поводу повторного использования действий в Cocos2D.Очевидно, что в документах говорится, что вы должны «инициализировать» действие снова, но это может не сработать для всех действий, и определенно считается плохой практикой отправлять сообщение «init…» на уже существующий объект снова.Это похоже на то, как вы не должны отправлять dealloc вручную на объект, но вы можете это сделать.
Тем не менее, это так, как и должно быть для действий Cocos2D, поэтому в вашем случае нужно-используйте то же анимационное действие, которое вы должны были бы отправить ему соответствующее сообщение init… снова:
[animation initWithDuration:5 animation:anim restoreOriginalFrame:YES];
[_animateAction setAnimation:animation];
В качестве примечания, было предложение для изменяемых действий в проблеме Cocos2DСистема слежения уже два года.Представленный патч кода не будет работать без изменений с текущей версией Cocos2D, но он может быть использован для создания ваших собственных изменяемых действий, если возникнет такая необходимость.