即使在appDidResignActive()之前暂停游戏,appDidBecomeActive()也会恢复SKAction

时间:2017-07-20 11:14:48

标签: ios swift sprite-kit

我有一个iOS SpriteKit游戏,它有一个移动节点。按暂停按钮时,将调用node.isPaused = true行。但是,如果你按下暂停,然后最小化应用程序,并重新启动它,节点就会恢复移动,即使在透明的“暂停”菜单下也是如此。

我从以下答案中尝试了这个命题:Answer1。但是,即使我在任何状态下调用场景的pauseGame方法,该函数也会被调用,但即使在暂停菜单下,节点也会重新开始移动。

我也尝试过以下答案:Answer2。但CBApplicationDidBecomeActive()甚至没有被调用。

我甚至尝试在链接1的方法中使用scene?.view?.isPaused = true,但它不起作用。

请帮忙。

我知道那里有很多类似的问题,但它们似乎都没有帮助解决我的问题。 (甚至,第二个链接的问题甚至没有得到接受的答案)

1 个答案:

答案 0 :(得分:3)

将pauseGame()和resumeGame()方法更改为:

private func pauseGame() {

        node.speed = 0.0
        gameState = .paused
        pauseLayer.run(SKAction.fadeAlpha(to: 0.5, duration: 1))


 }
 private func resumeGame() {
        pauseLayer.run(.fadeOut(withDuration: 1))
        node.speed = 1.0
        gameState = .inProgress
 }

请注意,我使用的是speed属性而不是isPaused属性......这就是你需要做的所有区别。无法真正说明为什么会发生这种情况,因为这种行为没有记录,但我已经看过了,并且在我以前的一些帖子中可能更详细地写了它。