Cocos2D pauseAllRunningActions?

Мне трудно возобновить анимацию в моем приложении Cocos2D. Я добавляю CCSprite в качестве дочернего элемента в CCSpriteBatchNode, и он запускает анимацию.

Поэтому, когда я нажимаю кнопку паузы, я делаю это:

[[[CCDirector sharedDirector] actionManager] pauseAllRunningActions];

Теперь в документах говорят использовать:

[[[CCDirector sharedDirector] actionManager] resumeTargets:];

Тем не менее, я пробовал все возможные цели, включая сам спрайт, пакетный узел, себя (CCLayer) и текущую CCScene, и ничего не сработало.

Есть ли способ возобновить работу ВСЕХ целей?

Редактировать: я объявил NSSet в синглтоне и делаю следующее:

[Singleton sharedSingleton].pauseTargets = [[[CCDirector sharedDirector] actionManager] pauseAllRunningActions];
[[[CCDirector sharedDirector] actionManager] pauseAllRunningActions];

Затем, чтобы возобновить, я делаю:

[[[CCDirector sharedDirector] actionManager] resumeTargets:[Singleton sharedSingleton].pauseTargets];

Но я получаю сбой:

2012-08-29 18:40:05.433 App[34872:707] -[__NSMallocBlock__ countByEnumeratingWithState:objects:count:]: unrecognized selector sent to instance 0x1e075a40
2012-08-29 18:40:05.434 App[34872:707] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSMallocBlock__ countByEnumeratingWithState:objects:count:]: unrecognized selector sent to instance 0x1e075a40'

person SimplyKiwi    schedule 29.08.2012    source источник
comment
Вы пробовали [[CCDirector sharedDirector]pause] и [[CCDirector sharedDirector]resume]?   -  person 0xDE4E15B    schedule 30.08.2012
comment
Нет, я не могу этого сделать. В противном случае мой слой паузы не будет добавлен как дочерний.   -  person SimplyKiwi    schedule 30.08.2012
comment
Вы хотите, чтобы ваша сцена была заморожена или она должна анимироваться во время паузы?   -  person 0xDE4E15B    schedule 30.08.2012
comment
Сцена НЕ должна быть заморожена, я просто хочу, чтобы ВСЕ анимационные элементы в сцене были приостановлены и успешно возобновлены. pauseAllRunningActions делает именно это, но я просто не знаю цель, которую он приостанавливает. И нет метода возобновления действия AllRunningActions.   -  person SimplyKiwi    schedule 30.08.2012
comment
- (NSSet *) pauseAllRunningActions Приостанавливает все запущенные действия, возвращая список целей, чьи действия были приостановлены. надеюсь, это поможет   -  person 0xDE4E15B    schedule 30.08.2012
comment
Хорошо, проверьте мое редактирование. Итак, теперь, когда вы видите, что такое runningActions, что я могу указать для возобновленияTargets: ?   -  person SimplyKiwi    schedule 30.08.2012
comment
Чтобы возобновить эти цели, передайте, что вернул NSSet в resumeTargets: методе [[[CCDirector sharedDirector] actionManager] resumeTargets:theTargets];   -  person 0xDE4E15B    schedule 30.08.2012
comment
Проверьте мой Edit2. Спасибо за помощь!   -  person SimplyKiwi    schedule 30.08.2012
comment
давайте продолжим это обсуждение в чате   -  person 0xDE4E15B    schedule 30.08.2012


Ответы (1)


Сохраняет приостановленные цели

NSSet *pausedTargets = [[NSSet alloc] initWithSet:[[[CCDirector sharedDirector] actionManager] pauseAllRunningActions]];

Возобновляет приостановленные цели

[[[CCDirector sharedDirector] actionManager] resumeTargets:pausedTargets];

Также не забудьте отпустить pausedTargets после снятия паузы.

person 0xDE4E15B    schedule 29.08.2012