0

我有一个切换菜单,当按下它时,它会在“暂停”和“恢复”这两个词之间切换,这也会暂停和恢复整个游戏。这意味着播放时,菜单将显示为“暂停”(点击此处暂停),暂停时菜单将显示为“恢复”(点击此处恢复)。

这就是问题所在,如果我在暂停游戏后点击主页按钮,然后返回,它会自行恢复并且暂停菜单显示为“恢复”。这对我来说没有意义。我想要的最好方法是在进入后台并从后台恢复时暂停游戏。我查看了以下方法,但它们并没有真正起作用:

-(void)applicationWillResignActive:(UIApplication *)application{
}

- (void)applicationDidBecomeActive:(UIApplication *)application{
}

-(void)applicationWillEnterBackground:(UIApplication*)application{
}

-(void)applicationDidEnterBackground:(UIApplication *)application {
}

我什至只是将 CCLOG 放在所有这些方法中,但没有调用任何内容。在使用这些方法之前,我需要放置/声明什么吗?

抱歉,阅读时间有点长。希望您能够帮助我。谢谢你。

4

3 回答 3

0

我不知道为什么,但根据我的经验(不是 cocos2d),如果想应用这些方法,没有额外的实现。

也许,你应该试试看这个。

链接 1链接 2

于 2012-02-21T09:43:28.080 回答
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 通过将您的应用程序作为正在运行的应用程序置于前台将控制权交还给您时:

- (void)applicationDidBecomeActive:(UIApplication *)application {
    NSLog(@"<%@>:applicationDidBecomeActive - received signal, resuming sharedDirector.",[self class]);

    [[CCDirector sharedDirector] resume];
}

除了重新启动 CCDirector 之外,您真的不需要在这里做任何花哨的事情,因为您的菜单处于“恢复”状态,保证。当用户按下 Resume 时,您将重新开始游戏并将菜单置于“暂停”状态。

于 2012-02-21T14:38:55.027 回答
0
-(void)applicationWillResignActive:(UIApplication *)application{
}

- (void)applicationDidBecomeActive:(UIApplication *)application{
}

你需要自定义你的 cocos2d CCDIRECTOR 类。并得到现在的显示层。然后激活它暂停或恢复功能。所有这些都必须需要一些协议。

于 2012-02-21T11:18:18.660 回答