2013-02-26 56 views
4

我正在使用Cocos2D为iOS编写游戏。我已经实现了一个暂停功能,允许用户根据要求暂停菜单。当我收到一个applicationWillResignActive时,我还实现了一个完整的暂停(不定期主游戏循环)。在applicationWillEnterForegroundapplicationDidBecomeActive我恢复主游戏循环,但随后将播放器放入暂停菜单,强制它们在准备就绪时恢复。除了一种情况之外,一切似乎都运作良好。当收到日历事件警报(我认为这是一个UIAlert)时,游戏不会抛出暂停菜单或暂停游戏。检测UIAlert /通知

我的三个问题:我必须同时包括willEnterForegrounddidBecomeActive,或者对我的目的来说足够好吗?我必须安排接受UIAlerts的电话是什么(如果这实际上是触发我在上述情况下的错误),我应该如何处理?有什么方法来模拟UIAlert,以便我可以测试/调试?

非常感谢。


编辑 -

的问题是在我的整体操控性的说事件。在苹果的文档中清楚地指出,使用willResignActive暂停游戏(即抛出暂停菜单并停止游戏循环),并使didEnterForeground恢复游戏循环,但保持暂停菜单。通过这种方式处理事件,不需要安排接收UIAlerts或本地/远程通知。

+0

我认为这是'UIApplicationDelegate'中'applicationWillResignActive:'的恰当用法,虽然我并不积极,但文档不是100%清晰的。它只是指出:“这可能发生在某些类型的临时中断(例如来电或SMS消息)或用户退出应用程序并开始过渡到后台状态时。” – 2013-02-26 21:56:35

+0

我同意,这非常含糊。此外,我不知道我是否应该设置观察员接收本地/远程通知或不......不清楚。 – Clev3r 2013-02-26 22:02:02

+1

你不需要一个观察者,而是一个实现这个消息的UIApplicationDelegate(通常是AppDelegate类)。如果您不确定,只需实现所有委托消息并设置断点或添加日志记录,以便知道何时收到哪些消息。 – LearnCocos2D 2013-02-26 22:07:42

回答

0

当你会得到一个日历事件,你会得到一个applicationWillResignActive调用:,这是一个地方处理cocos2D暂停或任何你想在日历事件接待处做的事情。如果calender事件被忽略,applicationDidBecomeActive将被调用。如果不被忽视,那么你将不得不从你正在做的事情恢复。