0

我正在使用 cocos2dx 将现有游戏从 ios 移植到 android。当应用程序暂停时,例如通过单击设备上的“锁定”按钮,应用程序正在暂停/休眠。但是当设备被重新激活并且我的应用程序再次出现时,它会冻结几秒钟。我想做的是显示一条游戏模式消息,告诉用户他/她应该等待一秒钟,直到游戏从冻结模式返回。但我可以简单地完成这项工作。

我试图在“onPause”和“onResume”上显示消息,但在冻结模式结束之前不会显示消息,我希望在应用程序重新出现时显示它。

我怎样才能使这项工作?

在 Ios 上,可以在应用程序进入后台之前收到通知。“applicationWillResignActive”我在 android 上找不到类似的东西。Android上是否存在诸如“pre-onPause”之类的通知/委托功能?

任何想法表示赞赏。

最好的

4

2 回答 2

0

您可以创建一个 BroadcastReceiver 来侦听 SSCREEN_OFF 意图并在发生这种情况时显示您的对话框,这样当屏幕重新打开时它仍然存在。

public class ScreenReceiver extends BroadcastReceiver {
    /**
     * @see android.content.BroadcastReceiver#onReceive(Context,Intent)
     */
    @Override
    public void onReceive(final Context context, Intent intent) {

        if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
            //Put your Dialog showing code here
        }
    }
}

然后在您的活动中,您可以像这样实例化和注册您的接收器:

IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_OFF);
BroadcastReceiver mReceiver = new ScreenReceiver();
registerReceiver(mReceiver, filter);
于 2012-11-28T20:19:39.603 回答
0

在 cocos2d-x 项目中 AppDelegate 类内部有函数 applicationDidEnterBackground() ,它的停止动画就是冻结的全部内容,然后 AppDelegate::applicationWillEnterForeground() 是动画再次开始的函数,当您的应用重新出现时需要时间

所以在 applicationDidEnterBackground() 中放置对话框或说暂停屏幕,然后按照你想要的方式做

我可以使用另一种方式,但它需要 JNI 调用我所做的是我已经从 android 到 cocos2d-x 进行了 JNI 调用 .. 因为我需要所有东西 BroadcastReceiver , Battery Indicator 等......

所以每当这些事情发生时,我都会从我的 onPause 方法中调用 JNI,然后在 cocos2d-x 中调用 pauseScene

于 2012-11-29T06:53:58.327 回答