我需要在游戏进入后台之前暂停游戏,所以当再次进入前景时,我会在游戏中看到暂停对话框。要显示暂停对话框,我有一个场景方法。如何在应用程序进入后台之前调用场景方法?我看到以下方法是正确的地方:
-(void) applicationDidEnterBackground:(UIApplication*)application
{
if( [navController_ visibleViewController] == director_ )
[director_ stopAnimation];
}
我应该从导演runningScene
获取场景,将其投射到我的场景类,然后向其发送暂停消息,或者那样丑陋?
答案 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
}