Spritekit - 当didBecomeActive时让游戏暂停

时间:2015-10-16 20:55:33

标签: sprite-kit appdelegate pause

我有一个带功能和按钮的暂停系统,它工作得很完美,我知道当应用程序进入后台时会自动暂停,当它回来时会自动取消自动,我的问题是我不知道当它再次变为活动时如何保持暂停状态。

func applicationWillResignActive(application: UIApplication) {

    NSNotificationCenter.defaultCenter().postNotificationName("Pause", object: nil) // tried here
}        


func applicationDidBecomeActive(application: UIApplication) {

    NSNotificationCenter.defaultCenter().postNotificationName("Pause", object: nil) // tried here
}

我分别尝试了这两种方法,但游戏一直在运行,有时它会显示我的暂停菜单(游戏玩法之上的一层)并且仍然在后台运行。那么实现这一目标的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

在场景或视图中,您应该能够通过向其添加观察者来处理暂停

    NSNotificationCenter.defaultCenter().addObserver(self,selector:Selector("pauseGame:",name:"Pause",object:nil)

然后你添加一个函数来处理这个

func pauseGame(notification:NSNotification)
{
    self.paused = true;
}

现在请记住,我发现在iOS 8中存在CBApplicationDidBecomeActive可能导致不良结果的错误,因此您需要在SKView的类中覆盖此类:

class GameSceneView : SKView
{
    ...//Other Code
    func CBApplicationDidBecomeActive()
    {
    }
}