Сброс или повторное использование действия CCAnimate - PullRequest
1 голос
/ 17 ноября 2011

Я использую CCAnimate для анимации своих CCAnimations.Я хочу повторно использовать действие CCAnimate, поэтому, когда я хочу воспроизвести другую анимацию, я делаю что-то вроде:

[_animateAction setAnimation:animation];

Это работает более или менее, проблема в том, что внутреннее время, затраченное на анимацию, неСброс, setAnimation - это просто установка новой анимации.Есть ли способ сбросить действие в cocos2D?Я скрывался в коде и документации, и, похоже, не существует какого-либо метода для достижения этой цели.

Кто-нибудь знает, что является "наилучшей практикой" в этой ситуации?.

1 Ответ

1 голос
/ 17 ноября 2011

Было много путаницы по поводу повторного использования действий в Cocos2D.Очевидно, что в документах говорится, что вы должны «инициализировать» действие снова, но это может не сработать для всех действий, и определенно считается плохой практикой отправлять сообщение «init…» на уже существующий объект снова.Это похоже на то, как вы не должны отправлять dealloc вручную на объект, но вы можете это сделать.

Тем не менее, это так, как и должно быть для действий Cocos2D, поэтому в вашем случае нужно-используйте то же анимационное действие, которое вы должны были бы отправить ему соответствующее сообщение init… снова:

[animation initWithDuration:5 animation:anim restoreOriginalFrame:YES];
[_animateAction setAnimation:animation];

В качестве примечания, было предложение для изменяемых действий в проблеме Cocos2DСистема слежения уже два года.Представленный патч кода не будет работать без изменений с текущей версией Cocos2D, но он может быть использован для создания ваших собственных изменяемых действий, если возникнет такая необходимость.

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