Android NDK:如何处理Cocos2dx中的Back键按?

时间:2012-05-28 08:24:09

标签: android android-ndk cocos2d-x

问题是我必须要说的。我需要知道如何处理android NDK中的backmenu等特殊按键。我正在使用Cocos2dX,所以如果你能给我一个Cocos2dX特定的答案,那将是很棒的。

4 个答案:

答案 0 :(得分: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。每个屏幕都可以实现这些功能。

答案 1 :(得分:1)

在Cocos2d-x中 你必须这样做 实施

 virtual void keyBackClicked();

还有这个

 this->setKeyPadEnable(true);

在.cpp类

答案 2 :(得分:1)

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

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

检查keyCode:

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");
    }
}

答案 3 :(得分:0)

如果您的班级未继承CClayer,那么您可以通过JNI来电来处理此问题。 在Cocos2dxGLSurfaceView.java中,您可以处理来自onKeyDown功能

的菜单键
public boolean onKeyDown(final int pKeyCode, final KeyEvent pKeyEvent)