关于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接收到。
注:本人使用的Cocos2d-x版本为3.4,开发脚本语言为lua。
最近在开发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。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories