按下主页按钮时暂停Sprite Kit场景

时间:2014-11-08 00:23:09

标签: ios objective-c sprite-kit

我想知道在按下主页按钮时如何暂停我的精灵工具包场景。

我在这里找到的答案很少,并且通过这样的通知中心进行了尝试。

当我的场景加载时:

 [[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;)没有被调用?

如果我将精确语句放在代码中的其他位置,或者如果我使用此语句创建一个暂停按钮,则暂停工作正常。

有什么问题?为什么这不能与通知中心合作?

2 个答案:

答案 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通知并处理我们的退出前代码。