【发布时间】:2014-07-14 03:13:13
【问题描述】:
我在 iOS 7 的 Sprite Kit 中有一个小问题。
我想做的只是暂停我的游戏。问题是我不能使用 self.paused 或 self.view.paused 属性,因为暂停游戏后,我想在屏幕上放置几个按钮( resume、quit 等)以及那些需要在其上添加动画(如果场景或视图暂停则无法实现)。
我尝试了以下方法:
[self enumerateChildNodesWithName:@"*" usingBlock:^(SKNode *node, BOOL *stop) {
node.paused = YES;
}];
[self physicsWorld].speed = 0.0;
... 这可以完美地暂停游戏,并且可以很容易地恢复(我不会粘贴该代码,它非常不言自明)。这样游戏就完全冻结了,而且我仍然可以设置一些带有动画的按钮。很好。
唯一的问题是,当我将应用程序发送到后台(通过按下主页按钮)然后将其返回时,游戏不会暂停(即使我每次将应用程序发送到背景)。 在我看来,如果应用程序进入后台,节点会“忘记”它们的 paused 属性设置为 YES。 我尝试 NSLog 找出节点的 paused 属性,这就是我得到的:
游戏运行时为0
应用发送到后台时为1(因为我粘贴的代码设置为1)
应用返回时为 0 (???)
当再次激活应用程序时(来自 - (void)applicationDidBecomeActive:(UIApplication *)application),我尝试调用 [self pauseGame](我自己的方法,其中包含我之前粘贴的代码)但它没有没救有趣...即使在应用激活后调用 pause 方法也不会暂停游戏,而是让它继续运行。
如果有人知道一些事情,我将非常感谢任何帮助。
谢谢,
亚当
【问题讨论】:
-
您可以尝试在 enumerateChildNodesWithName 中添加
node.speed = 0.0; -
好的,我试试
-
它有效:) 这样我什至不需要
node.paused东西。多谢,伙计。将其添加为答案!
标签: ios objective-c ios7 sprite-kit