模拟器下正常,但是真机运行时无法获取案件事件
代码如下:
local key_listener = cc.EventListenerKeyboard:create()
local function key_down(keyCode, event)
end
local function key_up(keyCode, event)
end
key_listener:registerScriptHandler(key_down,cc.Handler.EVENT_KEYBOARD_PRESSED)
key_listener:registerScriptHandler(key_up,cc.Handler.EVENT_KEYBOARD_RELEASED)
cc.Director:getInstance():getEventDispatcher():addEventListenerWithSceneGraphPriority(key_listener,layer
问题解决,cocos2d-x 3.3rc源代码问题手动修改解决
添加代码:
cocos2d-x/cocos/platform/android/java/src/org/cocos2dx/lib/Cocos2dxRenderer.java :
private static native boolean nativeKeyUp(final int pKeyCode);
public void handleKeyUp(final int pKeyCode) {
Cocos2dxRenderer.nativeKeyUp(pKeyCode);
}
cocos2d-x/cocos/platform/android/java/src/org/cocos2dx/lib/Cocos2dxGLSurfaceView.java :
@Override
public boolean onKeyUp(final int pKeyCode, final KeyEvent pKeyEvent) {
switch (pKeyCode) {
case KeyEvent.KEYCODE_BACK:
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.handleKeyUp(pKeyCode);
}
});
return true;
default:
return super.onKeyUp(pKeyCode, pKeyEvent);
}
}
cocos2d-x/cocos/platform/android/jni/TouchesJni.cpp :
JNIEXPORT jboolean JNICALL Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeKeyUp(JNIEnv * env, jobject thiz, jint keyCode) {
Director* pDirector = Director::getInstance();
auto iterKeyCode = g_keyCodeMap.find(keyCode);
if (iterKeyCode == g_keyCodeMap.end()) {
return JNI_FALSE;
}
cocos2d::EventKeyboard::KeyCode cocos2dKey = g_keyCodeMap.at(keyCode);
cocos2d::EventKeyboard event(cocos2dKey, false);
cocos2d::Director::getInstance()->getEventDispatcher()->dispatchEvent(&event);
return JNI_TRUE;
}
修改:
cocos2d-x/cocos/platform/android/jni/TouchesJni.cpp :
JNIEXPORT jboolean JNICALL Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeKeyDown(JNIEnv * env, jobject thiz, jint keyCode):
cocos2d::EventKeyboard event(cocos2dKey, true);
能教教我 怎么到eslipse 调试程序吗?
我运行build_native的时候 报错 fatal error 找不到 cocos2d.h
先谢谢了
用eclipse比较麻烦,用专门定制的吧,Cocos Code IDE
多谢 请问这个IDE C++也可以用吗?