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];
    }
}
Другие вопросы по тегам