Cocos2d-x android使用onKeyDown监听返回键实现二次返回退出<
一般的游戏或者软件,都会在android版本上做退出程序的功能,一般的实现方式有两种: public boolean onKeyDown(final int pKeyCode,final KeyEvent pKeyEvent)
实现对用户按键的监听,但是将代码加入到cocos2d-x生成的Java代码中的AppActivity中,发现根本不起作用,没法监听到用户的按键操作,找官方api文档,发现: public boolean onKeyDown (int keyCode,KeyEvent event) Since: API Level 1 @Override
public boolean onKeyDown(final int pKeyCode,final KeyEvent pKeyEvent) {
switch (pKeyCode) {
case KeyEvent.KEYCODE_BACK:
case KeyEvent.KEYCODE_MENU:
this.queueEvent(new Runnable() {
@Override
public void run() {
Cocos2dxGLSurfaceView.this.mCocos2dxRenderer.handleKeyDown(pKeyCode);
}
});
return true;
default:
return super.onKeyDown(pKeyCode,pKeyEvent);
}
}
这个里面,按键KeyEvent.KEYCODE_BACK被监听了,只要在这里不作处理即可(return false),改成如下代码: @Override
public boolean onKeyDown(final int pKeyCode,final KeyEvent pKeyEvent) {
switch (pKeyCode) {
case KeyEvent.KEYCODE_BACK:
return false;
case KeyEvent.KEYCODE_MENU:
this.queueEvent(new Runnable() {
@Override
public void run() {
Cocos2dxGLSurfaceView.this.mCocos2dxRenderer.handleKeyDown(pKeyCode);
}
});
return true;
default:
return super.onKeyDown(pKeyCode,pKeyEvent);
}
}
这样在你自己的cocos2d-x游戏Activity中就可以监听返回键了,在AppActivity中重写onKeyDown方法,如下: private long mkeyTime = 0;
public boolean onKeyDown(int keyCode,KeyEvent event) {
//二次返回退出
if (keyCode == KeyEvent.KEYCODE_BACK) {
if ((System.currentTimeMillis() - mkeyTime) > 2000) {
mkeyTime = System.currentTimeMillis();
Toast.makeText(this,"再按一次退出游戏",Toast.LENGTH_LONG).show();
} else {
finish();
System.exit(0);
}
return false;
}
return super.onKeyDown(keyCode,event);
}
然后运行游戏, 点击返回键试试,有没有Toast? 转载自:http://50vip.com/390.html (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |