2015-10-16 79 views
1

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

func applicationWillResignActive(application: UIApplication) { 

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


func applicationDidBecomeActive(application: UIApplication) { 

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

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

回答

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() 
    { 
    } 
} 
+1

当然,我有一个观察者来对应通知,但是那个函数是什么,它怎么能覆盖AppDelegate中的那个? – Abdou023

+0

Appdelegate作为通知被调用时自动发送的通知被调用,因此skview在后台调用该函数,并暂停混乱,基本上你正在做的是重写它,以便它不会调用内部方法 – Knight0fDragon

+1

什么是我在说的是CBDidBecomeActive不会覆盖AppDelegate中的函数,它是一个自定义无关的函数。 – Abdou023