Я знаю, что у вас уже есть ответ, но вы хотели поделиться своим решением, потому что я перешел по этой ссылке при исследовании той же проблемы. Я также разместил это на форумах cocos2d.
- (void)pauseSchedulerAndActionsRecursive:(CCNode *)node {
[node pauseSchedulerAndActions];
for (CCNode *child in [node children]) {
[self pauseSchedulerAndActionsRecursive:child];
}
}
- (void)resumeSchedulerAndActionsRecursive:(CCNode *)node {
[node resumeSchedulerAndActions];
for (CCNode *child in [node children]) {
[self resumeSchedulerAndActionsRecursive:child];
}
}
У меня есть одна сцена и два слоя, слой сцены / геймплея и слой меню. Мои меню анимировались внутри и снаружи, и я хотел, чтобы мое меню паузы могло также анимировать входы и выходы. Поэтому я просто добавил вышеупомянутые функции к своему уровню сцены / геймплея. Затем, когда пользователь нажимает паузу, я вызываю pauseSchedulerAndActionsRecursive: на моем уровне stage / gameplay и добавляю слой меню в сцену сверху. Мое меню поглощает все касания, поэтому касание также отключено на уровне сцены / геймплея, пока слой меню открыт. Затем просто вызовите resumeSchedulerAndActionsRecursive: метод для возобновления. Надеюсь, это кому-нибудь поможет.