-
Creator 版本:2.0.0
-
目标平台: Android
-
详细报错信息,包含调用堆栈:无
-
重现方式:
-
之前哪个版本是正常的 :
-
手机型号 :
-
手机浏览器 :
-
编辑器操作系统 :
-
编辑器之前是否有其它报错 :
-
出现概率:
-
额外线索:
public init (): void {
cc.systemEvent.on(cc.SystemEvent.EventType.KEY_DOWN, this._keyDown, this)
}
private _keyDown (event): void {
cc.error("ASDASDASDASDASDASD", event.keyCode, cc.KEY.back)
if (event.keyCode === cc.KEY.back) {
this.onBackPressed()
}
}
Jnilmp.cpp
JNIEXPORT jboolean JNICALL Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeKeyEvent(JNIEnv * env, jobject thiz, jint keyCode, jboolean isPressed)
{
if (g_isGameFinished) {
return JNI_TRUE;
}
//TODO
cocos2d::log("JNI JNI JNI JNI JNI");
return JNI_TRUE;
}
js里面,事件正常注册,logcat也能看到按键事件
但是,就是不执行js里面的回调部分
追根溯源,找到了上面的jni代码,发现引擎就是跑到这里然后直接返回true,不会去调用js
logcat
08-09 18:43:57.460 7989-7989/app.xixi.haha I/View: Key down dispatch to org.cocos2dx.lib.Cocos2dxGLSurfaceView{34e00a72 VFE..... .F...... 0,0-1080,1920}, event = KeyEvent { action=ACTION_DOWN, keyCode=KEYCODE_BACK, scanCode=158, metaState=0, flags=0x8, repeatCount=0, eventTime=558523998, downTime=558523998, deviceId=18, source=0x101 }
08-09 18:43:57.466 7989-8019/app.xixi.haha D/cocos2d-x debug info: JNI JNI JNI JNI JNI
08-09 18:43:57.602 7989-7989/app.xixi.haha I/View: Key up dispatch to org.cocos2dx.lib.Cocos2dxGLSurfaceView{34e00a72 VFE..... .F...... 0,0-1080,1920}, event = KeyEvent { action=ACTION_UP, keyCode=KEYCODE_BACK, scanCode=158, metaState=0, flags=0x8, repeatCount=0, eventTime=558524150, downTime=558523998, deviceId=18, source=0x101 }
08-09 18:43:57.617 7989-8019/app.xixi.haha D/cocos2d-x debug info: JNI JNI JNI JNI JNI
08-09 18:44:04.688 7989-7989/app.xixi.haha I/View: Key down dispatch to org.cocos2dx.lib.Cocos2dxGLSurfaceView{34e00a72 VFE..... .F...... 0,0-1080,1920}, event = KeyEvent { action=ACTION_DOWN, keyCode=KEYCODE_BACK, scanCode=158, metaState=0, flags=0x8, repeatCount=0, eventTime=558531232, downTime=558531232, deviceId=18, source=0x101 }
08-09 18:44:04.699 7989-8019/app.xixi.haha D/cocos2d-x debug info: JNI JNI JNI JNI JNI
08-09 18:44:04.803 7989-7989/app.xixi.haha I/View: Key up dispatch to org.cocos2dx.lib.Cocos2dxGLSurfaceView{34e00a72 VFE..... .F...... 0,0-1080,1920}, event = KeyEvent { action=ACTION_UP, keyCode=KEYCODE_BACK, scanCode=158, metaState=0, flags=0x8, repeatCount=0, eventTime=558531350, downTime=558531232, deviceId=18, source=0x101 }
08-09 18:44:04.817 7989-8019/app.xixi.haha D/cocos2d-x debug info: JNI JNI JNI JNI JNI
并且在代码头部找到了
// std::unordered_map<int, cocos2d::EventKeyboard::KeyCode> g_keyCodeMap =
// {
// { KEYCODE_BACK , cocos2d::EventKeyboard::KeyCode::KEY_ESCAPE },
// { KEYCODE_MENU , cocos2d::EventKeyboard::KeyCode::KEY_MENU },
// { KEYCODE_DPAD_UP , cocos2d::EventKeyboard::KeyCode::KEY_DPAD_UP },
// { KEYCODE_DPAD_DOWN , cocos2d::EventKeyboard::KeyCode::KEY_DPAD_DOWN },
// { KEYCODE_DPAD_LEFT , cocos2d::EventKeyboard::KeyCode::KEY_DPAD_LEFT },
// { KEYCODE_DPAD_RIGHT , cocos2d::EventKeyboard::KeyCode::KEY_DPAD_RIGHT },
// { KEYCODE_ENTER , cocos2d::EventKeyboard::KeyCode::KEY_ENTER },
// { KEYCODE_PLAY , cocos2d::EventKeyboard::KeyCode::KEY_PLAY },
// { KEYCODE_DPAD_CENTER , cocos2d::EventKeyboard::KeyCode::KEY_DPAD_CENTER },
// };
所以这个要弃用了?