暂停spritekit场景并显示“暂停”标签

时间:2014-04-09 10:37:32

标签: ios objective-c ios7 sprite-kit

当有人点击屏幕并因此暂停精灵工具包游戏时,我想显示“暂停”SKLabelNode

所以我在touchesBegan - >

[self.pausedLabel setHidden:!self.pausedLabel.hidden];
[self.scene.view setPaused:!self.scene.view.paused];

游戏正确暂停,但SKLabelNode未显示(场景在暂停前未呈现?!) 如果我添加NSTimer来暂停场景,则会显示标签,但随后游戏将继续该计时器时间。

有没有人有更好的解决方案?

提前致谢

2 个答案:

答案 0 :(得分:1)

我会为此使用SKAction。您可以使用+ runBlock:添加与隐藏标签相关的代码,然后使用-runAction方法和完成处理程序来暂停场景。 runBlock:方法可能会立即返回,但这样,屏幕会在场景暂停之前进行更新。

SKAction *action = [SKAction runBlock:^{
    [self.pausedLabel setHidden:!self.pausedLabel.hidden];
}];

[self.pausedLabel runAction:action completion:^{
    [self.scene.view setPaused:!self.scene.paused];
}];

答案 1 :(得分:0)

只需使用状态ivar来确定场景是否应更新其内容。 单击按钮时将此状态设置为PAUSE并在场景框架更新循环中测试状态。

if (_state != PAUSE) {// Use enum for the state var
    // Update scene objects
}
单击按钮时

  • 向场景添加暂停标签
  • 将州设置为PAUSE

这种方法的好处是它可以让你准确地决定暂停时会发生什么(反对暂停整个场景)。您可以在暂停时为冷静的背景设置动画,或者执行任何您喜欢的操作,因为这完全在您的控制之中