我想知道在按下主页按钮时如何暂停我的精灵工具包场景。
我在这里找到的答案很少,并且通过这样的通知中心进行了尝试。
当我的场景加载时:
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(applicationDidEnterBackground)
name:UIApplicationDidEnterBackgroundNotification
object:nil];
然后是进入后台调用的方法:
- (void) applicationDidEnterBackground{
NSLog(@"Enter to background");
self.scene.view.paused =YES;
}
这里的问题是我得到了NSLog消息,因此正确调用了applicationDidEnterBackground方法。但问题是,当我返回应用程序时,我的应用程序未启用"暂停"模式。
所以我的暂停声明(self.scene.view.paused = YES;)没有被调用?
如果我将精确语句放在代码中的其他位置,或者如果我使用此语句创建一个暂停按钮,则暂停工作正常。
有什么问题?为什么这不能与通知中心合作?
答案 0 :(得分:4)
用于iOS 8的Sprite工具包会在退出后台模式后自动恢复您的游戏。它发生在调用applicationDidBecomeActive之后。此外,iOS 8的Sprite工具包会在游戏移动到后台时自动暂停游戏。
更新:以下是进入/退出Xcode 5和6的后台模式时skView.paused的状态。
Xcode 6
部署目标7.0,7.1 **,8.0和8.1
applicationWillResignActive = NO
applicationDidEnterBackground = YES
applicationWillEnterForeground = YES
applicationDidBecomeActive = YES
**当我在运行iOS 7.1的设备上运行时,状态都是NO
Xcode 5
部署目标7.0和7.1
applicationWillResignActive = NO
applicationDidEnterBackground = NO
applicationWillEnterForeground = NO
applicationDidBecomeActive = NO
答案 1 :(得分:1)
当您的申请进入后台时,可能为时已晚。
相反,我们应该在收到此通知时注册UIApplicationWillResignActiveNotification
通知并处理我们的退出前代码。