Cocos2dx Android工程物理返回鍵失效問題

最近在對接Cocos工程,遇到了一個小問題,物理返回鍵點擊不起作用,沒辦法只能自己查原因了。

首先看了下頁面繼承的Cocos2dxActivity,以爲它屏蔽了onBackPressed/onKeyDown,但未發現其重寫。

後來發現其實cocos的頁面是空值surfaceview完成頁面渲染等工作,懷疑是其屏蔽了onKeyDown

 

找到Desktop/jsb-default/frameworks/cocos2d-x/cocos/platform/android/java/src/org/cocos2dx/lib/Cocos2dxGLSurfaceView.java

的onKeyDown,然後添加代碼 return false;  就可以解除攔截了

 @Override
    public boolean onKeyDown(final int pKeyCode, final KeyEvent pKeyEvent) {


        switch (pKeyCode) {
            case KeyEvent.KEYCODE_BACK:
                Cocos2dxVideoHelper.mVideoHandler.sendEmptyMessage(Cocos2dxVideoHelper.KeyEventBack);
                return false;    // 添加代碼,去除攔截,防止android物理返回鍵失效
            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 true;
            default:
                return super.onKeyDown(pKeyCode, pKeyEvent);
        }

    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章