您的位置:首页 > 移动开发 > Cocos引擎

关于Cocos2d-x-lua的Android原生按键无反应的解决方法

2016-04-26 00:00 555 查看
摘要: 将Cocos2dxGLSurfaceView中的onKeyDown方法的返回值改为false,方可被AppActivity中的onKeyDown接收到。

最近在开发Android电视游戏,需要用到遥控器上的方向键和返回键等监听,然后发现AppActivity的父类并没有重写onKeyDown方法,遂找到了Cocos2d-x中android项目的依赖项目libcocos2dx中的一个类,Cocos2dxGLSurfaceView

该类中有重写onKeyDown,并且我需要的几个键的返回值居然是true,代表事件到此已被处理,不再继续传递,这也导致了我在AppActivity类中的onKeyDown无法接收到那几个事件

很简单的一个处理方法,就是将Cocos2dxGLSurfaceView中的onKeyDown方法的返回值改为false,方可被AppActivity中的onKeyDown接收到。

public boolean onKeyDown(final int pKeyCode, final KeyEvent pKeyEvent) {
switch (pKeyCode) {
case KeyEvent.KEYCODE_BACK:
Cocos2dxVideoHelper.mVideoHandler.sendEmptyMessage(Cocos2dxVideoHelper.KeyEventBack);
case KeyEvent.KEYCODE_MENU:
case KeyEvent.KEYCODE_DPAD_LEFT:
case KeyEvent.KEYCODE_DPAD_RIGHT:
case KeyEvent.KEYCODE_DPAD_UP:
case KeyEvent.KEYCODE_DPAD_DOWN:
case KeyEvent.KEYCODE_ENTER:
case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE:
case KeyEvent.KEYCODE_DPAD_CENTER:
this.queueEvent(new Runnable() {
@Override
public void run() {
Cocos2dxGLSurfaceView.this.mCocos2dxRenderer.handleKeyDown(pKeyCode);
}
});
return false;//将此处改为false
default:
return super.onKeyDown(pKeyCode, pKeyEvent);
}
}


注:本人使用的Cocos2d-x版本为3.4,开发脚本语言为lua。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息