我有一个切换菜单,当按下它时,在“暂停”和“恢复”之间切换,这也会暂停和恢复整个游戏。这意味着在播放时,菜单将显示为“暂停”(点击此处暂停),暂停菜单时将显示“恢复”(点击此处继续)。
问题是,如果我在暂停游戏后点击主页按钮,然后返回到它,它会自动恢复,暂停菜单显示为“恢复”。这对我来说没有意义。我想要的最好的方法是每当进入后台并从后台恢复时暂停游戏。我看一下以下方法,但它们并没有真正起作用:
-(void)applicationWillResignActive:(UIApplication *)application{
}
- (void)applicationDidBecomeActive:(UIApplication *)application{
}
-(void)applicationWillEnterBackground:(UIApplication*)application{
}
-(void)applicationDidEnterBackground:(UIApplication *)application {
}
我甚至只是将CCLOG放在所有这些方法中,但没有任何方法被调用。在使用这些方法之前,我需要放置/声明一些东西吗?
抱歉,阅读时间太长了。希望您能够帮助我。谢谢。
答案 0 :(得分:0)
答案 1 :(得分:0)
-(void)applicationWillResignActive:(UIApplication *)application{
}
- (void)applicationDidBecomeActive:(UIApplication *)application{
}
你需要定制你的cocos2d CCDIRECTOR类。现在获取显示层。然后激活它暂停或恢复功能。所有这一切都需要一些协议。
答案 2 :(得分:0)
当iOS强制您的应用程序在后台运行或恢复应用程序的执行时,会调用这些方法,即当外部事件导致您的应用程序进入后台或从中返回时,它们是您收到的信号。您不应该尝试直接调用它们。除非您明确表达关系,否则与您的“用户创建”菜单(如“恢复/暂停”菜单)之间没有真正的关系。
因此,在以下方法中:
- (void)applicationWillResignActive:(UIApplication *)application {
NSLog(@"<%@>:applicationWillResignActive - received signal, pausing sharedDirector.",[self class]);
// here : place your code for forcing your menu in the 'Resume' state
// i am assuming some kind of change in a button, and
// a state variable of your own that define and control
// what it means to be 'paused' from your applications point of
// view
// then force the director to pause (animations, scheduling, touch, etc ...)
[[CCDirector sharedDirector] pause];
}
之后,当iOS通过将您的应用程序作为正在运行的应用程序放置在forground中时,您可以将控制权交给您:
- (void)applicationDidBecomeActive:(UIApplication *)application {
NSLog(@"<%@>:applicationDidBecomeActive - received signal, resuming sharedDirector.",[self class]);
[[CCDirector sharedDirector] resume];
}
除了重新启动CCDirector之外,你真的不需要做任何想象,因为你的菜单处于'恢复'状态,保证。当用户按下Resume时,您将再次启动游戏并将菜单置于“Pause”状态。