5

我正在使用 cocos2dx 制作一个小游戏,在我的游戏活动中,我提供了以下函数来处理后退按钮。

@Override
 public boolean onKeyDown(int keyCode, KeyEvent event)
 {
     return super.onKeyDown(keyCode, event);
 }

 @Override
 public void onDestroy()
 {
     android.os.Process.killProcess(android.os.Process.myPid());
     super.onDestroy();
 }

按下后退按钮时,我在 logcat 中收到以下警告

无法打开 keycharmap 文件

加载键字符映射文件“/system/usr/keychars/qtouch-touchscreen.kcm.bin”时出错。hw.keyboards.65538.devname='qtouch-touchscreen'

该调用未到达 onKeyDown 或 onDestroy 函数。

请告诉我为什么会出现此警告以及为什么我无法处理 android 后退按钮。

这些功能在我的 java android 项目上运行良好,但在我的 cocos2d-x 项目中运行良好

4

5 回答 5

8

已在文件中处理Cocos2dxGLSurfaceView.java

把它改成下面,myActivitycocos2dAccticity 在哪里

        case KeyEvent.KEYCODE_BACK:
                    AlertDialog ad = new AlertDialog.Builder(myActivity)
                    .setTitle("EXIT?")
                    .setMessage("Do you really want to exit?")
                    .setPositiveButton("YES", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {
                            ((Cocos2dxActivity)myActivity).finish();
                        }
                    })
                    .setNegativeButton("NO", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {

                        }
                    }).create();
                    ad.show();
            return true;
        case KeyEvent.KEYCODE_MENU:
于 2012-12-04T07:47:45.237 回答
2

要处理后退按钮按下,您需要重新定义onBackPressed()活动的方法,而不是这两种方法。

于 2012-12-04T07:07:28.573 回答
1

你启用触控了吗?如果没有,请启用它,希望它会解决您的问题。

我假设这是您游戏屏幕上的按钮。

于 2012-12-04T07:04:44.743 回答
1

只是您的应用程序实现了 onKeyDown 的覆盖方法,

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    // TODO Auto-generated method stub
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        // Here to implements for your code.
        Log.d(TAG, "KEYCODE_BACK");
    }
    return super.onKeyDown(keyCode, event);
}
于 2012-12-04T07:21:05.540 回答
1

这是 Cocos2d-x 3+ 版本的更新

在这里已经简单地回答了这个问题(并且有效)

以及稍微不完整的 youtube在这里

于 2014-10-09T17:57:52.633 回答