问题是我必须要说的。我需要知道如何处理android NDK中的back
,menu
等特殊按键。我正在使用Cocos2dX,所以如果你能给我一个Cocos2dX特定的答案,那将是很棒的。
答案 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)