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

标签 ios objective-c sprite-kit

我想知道如何在按下主页按钮时暂停我的 sprite 套件场景。

我在这里找到了很少的答案,并尝试使用这样的通知中心。

当我的场景加载时:

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

如果我在代码中的其他地方放置了确切的语句,或者如果我用这个语句制作了一个暂停按钮,那么 pause 就可以正常工作。

问题是什么?为什么这不适用于通知中心?

最佳答案

适用于 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

关于ios - 按下主页按钮时暂停 Sprite Kit 场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26812269/

相关文章:

iphone - 将 XML 解析为 NSMutableArray

ios - 目前正在尝试将 Swift 3 编写的模块迁移到 Swift 2.3

objective-c - CoreAnimation : warning, 已删除具有未提交 CATransaction 的线程

ios - 无法使用 SDWebImage

objective-c - 自定义 UINavigationBar 使其不可见,但保持按钮可见

ios - 将自定义 SKShader 应用于 SKScene,使用 Swift 在 iOS 8 SpriteKit 中对整个渲染场景进行像素化

ios - Swift SpriteKit 在 SKAction.runBlock() 中运行 SKAction

android - Flex Mobile StyleableTextField 根据方向截断文本

swift - 使一个物体跟随另一个物体x位置

ios - 在 NSManaged 变量上使用属性观察器