Cocos2d доступ к свойствам и методам сцены
Я пытаюсь включить функцию паузы для моей игры. Пока бежит pause
на [CCDirector sharedDirector]
было достаточно хорошо, когда пробегаюсь через мой pauseGame
метод (который включает в себя BOOL, чтобы сказать, если игра приостановлена и т. д.)
Однако я заметил, что если я вернусь к домашнему экрану на моем устройстве, мой делегат приложения автоматически запустится pause
а также resume
на sharedDirector
,
В идеале я хотел бы получить доступ к моей активной сцене / слою, чтобы я мог запустить свой собственный метод паузы.
Как я могу: 1) проверить, является ли текущая сцена моей игровой сценой 2) получить доступ к свойству pause игровой сцены и запустить для него метод pauseGame?
Любая помощь приветствуется. Спасибо
2 ответа
Я использую другой подход для приостановки игры.
У меня обычно есть игровая сцена с игровыми слоями. Чтобы приостановить игру, я добавляю новый слой (покрывающий весь экран), а когда я ставлю игру на паузу, я отображаю этот слой. Таким образом, вы можете прекратить трогать события для игрового слоя и восстанавливать их при возобновлении игры (и удаляя слой паузы со сцены)
Сцена бега [CCDirector sharedDirector].runningScene
Если вы вызываете [scene pauseSchedulerAndActions]; на текущей сцене это не будет возобновлено при переходе назад и вперед на главном экране.
Если вам нужно приостановить ВСЕ узлы в иерархии, вот метод для расширения CCNode
-(void)recursivePauseSchedulerAndActions {
[self pauseSchedulerAndActions];
CCNode *child;
CCARRAY_FOREACH(children_, child) {
[child recursivePauseSchedulerAndActions];
}
}
-(void)recursiveResumeSchedulerAndActions {
[self resumeSchedulerAndActions];
CCNode *child;
CCARRAY_FOREACH(children_, child) {
[child recursiveResumeSchedulerAndActions];
}
}