5

这个问题就是我要说的。我需要知道如何处理 android NDK 中的特殊按键back,例如menu等。我正在使用 Cocos2dX,所以如果你能给我一个 Cocos2dX 特定的答案,那就太好了。

4

4 回答 4

7

在 cocos2dx 中,每个CCLayer都有以下方法,这些方法可以被覆盖以向它们添加功能:

class CC_DLL CCKeypadDelegate
{
public:
    // The back key clicked
    virtual void keyBackClicked() {}

    // The menu key clicked. only avialble on wophone & android
    virtual void keyMenuClicked() {};
};

CCLayer继承自CCKeypadDelegate。每个屏幕都可以实现这些功能。

于 2012-05-28T08:49:55.343 回答
1

在 Cocos2d-x 你必须做那个实现

 virtual void keyBackClicked();

还有这个

 this->setKeyPadEnable(true);

在 .cpp 类中

于 2013-11-13T11:34:35.330 回答
1

启用键盘:this->setKeypadEnabled(true);

覆盖 onKeyReleased 方法: virtual void onKeyReleased(EventKeyboard::KeyCode keyCode, Event* event);

检查键码:

void GameScene::onKeyReleased(EventKeyboard::KeyCode keyCode, cocos2d::Event *event)
{
    if (keyCode == EventKeyboard::KeyCode::KEY_BACKSPACE) {
        CCLOG("You pressed back button");
    }
    else if(keyCode == EventKeyboard::KeyCode::KEY_MENU)
    {
        CCLOG("You pressed menu button");
    }
}
于 2014-01-20T11:53:22.567 回答
0

如果您的类不是用 继承的CClayer,那么您可以通过JNI调用来处理它。在您从功能Cocos2dxGLSurfaceView.java中处理返回和菜单键onKeyDown

public boolean onKeyDown(final int pKeyCode, final KeyEvent pKeyEvent)
于 2014-01-31T11:54:56.343 回答