码迷,mamicode.com
首页 > 移动开发 > 详细

cocos2dx3.2在android上返回键无法响应问题解决

时间:2014-10-09 15:38:58      阅读:283      评论:0      收藏:0      [点我收藏+]

标签:cocos2dx   android   不响应返回键   返回键无效   cocos2dx3.0   

原因很简单, android的按键事件触发的是onKeyReleased。而不是onKeyPressed。

下面贴上关键代码

1.android部分响应按键,接下来就调用jni接口了

    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() {
                       <span style="color:#FF0000;"> Cocos2dxGLSurfaceView.this.mCocos2dxRenderer.handleKeyDown(pKeyCode);</span>
                    }
                });
                return true;
            default:
                return super.onKeyDown(pKeyCode, pKeyEvent);
        }
    }
2.jni接口被调用,按键Event创建 (TouchesJni.cpp)

    JNIEXPORT jboolean JNICALL Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeKeyDown(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);
        <span style="color:#FF0000;">cocos2d::EventKeyboard event(cocos2dKey, false); // 虽然是keyDown,但被设置为released消息</span>
        cocos2d::Director::getInstance()->getEventDispatcher()->dispatchEvent(&event);
        return JNI_TRUE;
        
    }}

3. 接下来就不用说了吧。。 所以在android下。 key事件永远不会响应onKeyPressed消息的。

诶。。。。。



cocos2dx3.2在android上返回键无法响应问题解决

标签:cocos2dx   android   不响应返回键   返回键无效   cocos2dx3.0   

原文地址:http://blog.csdn.net/lumingyuan25/article/details/39925773

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!