Как сохранить паузу после возобновления игры из фона в cocos2d? - PullRequest
0 голосов
/ 21 февраля 2012

У меня есть меню переключения, которое переключается между словами «Пауза» и «Возобновить» при нажатии, которое также приостанавливает и возобновляет всю игру.Это означает, что при воспроизведении меню будет отображаться как «Пауза» (нажмите здесь, чтобы сделать паузу), а при приостановке меню будет отображаться как «Возобновить» (нажмите здесь, чтобы возобновить).

Вот проблема,если я нажимаю кнопку «Домой» после приостановки игры, а затем возвращаюсь в нее, она возобновляется, и меню паузы отображается как «Возобновить».И это не имеет смысла для меня.Лучший способ, которым я хочу, - это приостановить игру, когда уйдет в фоновый режим и возобновится из фона.Я смотрю на следующие методы, но они на самом деле не работают:

-(void)applicationWillResignActive:(UIApplication *)application{
}

- (void)applicationDidBecomeActive:(UIApplication *)application{
}

-(void)applicationWillEnterBackground:(UIApplication*)application{
}

-(void)applicationDidEnterBackground:(UIApplication *)application {
}

Я даже просто включил CCLOG во все эти методы, но ничего не было вызвано.Есть ли что-то, что мне нужно поставить / объявить перед использованием этих методов?

Извините, это слишком долго для чтения.Надеюсь, ты сможешь мне помочь.Спасибо.

Ответы [ 3 ]

0 голосов
/ 21 февраля 2012
-(void)applicationWillResignActive:(UIApplication *)application{
}

- (void)applicationDidBecomeActive:(UIApplication *)application{
}

вам нужен пользовательский класс cocos2d CCDIRECTOR.И получить сейчас отображение слоя.затем включите паузу или возобновите функцию.Для всего этого нужен протокол.

0 голосов
/ 21 февраля 2012

Эти методы вызываются, когда iOS заставляет ваше приложение работать в фоновом режиме или возобновляет выполнение вашего приложения, то есть это сигналы, которые вы получаете, когда внешнее событие заставляет ваше приложение перейти в фоновый режим или вернуться из него.Вы не должны пытаться вызвать их напрямую.Нет реальной связи с меню, созданным пользователем, таким как ваше (например, меню «Возобновить / Пауза»), если вы не сделаете связь явной.

Итак, в следующем методе:

- (void)applicationWillResignActive:(UIApplication *)application {
    NSLog(@"<%@>:applicationWillResignActive - received signal, pausing sharedDirector.",[self class]);

    // here : place your code for forcing your menu in the 'Resume' state
    // i am assuming some kind of change in a button,  and
    // a state variable of your own that define and control
    // what it means to be 'paused' from your applications point of
    // view

    // then force the director to pause (animations, scheduling, touch, etc ...)

    [[CCDirector sharedDirector] pause];
}

после того, как iOS вернет вам управление, поместив ваше приложение в forground в качестве запущенного приложения:

- (void)applicationDidBecomeActive:(UIApplication *)application {
    NSLog(@"<%@>:applicationDidBecomeActive - received signal, resuming sharedDirector.",[self class]);

    [[CCDirector sharedDirector] resume];
}

Вам действительно не нужно делать что-то необычное здесь, кроме перезапуска CCDirector, поскольку ваше меню находится в состоянии «Возобновить», гарантировано.Когда пользователь нажимает кнопку «Возобновить», вы снова запускаете игру и переводите меню в состояние «Пауза».

0 голосов
/ 21 февраля 2012

Я не уверен почему, но для моего опыта (не cocos2d), нет никакой дополнительной реализации, если вы хотите применить эти методы.

возможно, вы должны попробовать посмотреть на это.

ссылка 1 & ссылка 2

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