如何在应用程序进入后台之前调用场景方法?

时间:2013-11-01 22:47:53

标签: ios cocos2d-iphone

我需要在游戏进入后台之前暂停游戏,所以当再次进入前景时,我会在游戏中看到暂停对话框。要显示暂停对话框,我有一个场景方法。如何在应用程序进入后台之前调用场景方法?我看到以下方法是正确的地方:

-(void) applicationDidEnterBackground:(UIApplication*)application
{
    if( [navController_ visibleViewController] == director_ )
        [director_ stopAnimation];
}

我应该从导演runningScene获取场景,将其投射到我的场景类,然后向其发送暂停消息,或者那样丑陋?

1 个答案:

答案 0 :(得分:0)

在这种情况下,我认为通知是最干净,最安全的选择。您可以从applicationDidEnterBackground发布通知,并在任何您想要执行某些操作的地方接收:

在App代表中:

- (void)applicationDidEnterBackground:(UIApplication*)application {
   [[NSNotificationCenter defaultCenter] postNotificationName:@"EnteringBackground" object:nil];
}

在GameScene中:

- (void)onEnter {
   [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showPausePopup) name:@"EnteringBackground" object:nil];
}

- (void)onExit {
   [[NSNotificationCenter defaultCenter] removeObserver:self];
}

- (void)showPausePopup:(NSNotification*)notification {
   // Code to show popup
}