Android NDK: Как обращаться с нажатием клавиши Back в Cocos2dx?

Вопрос только в том, что я должен сказать об этом. Мне нужно знать, как обрабатывать специальные нажатия клавиш, например, back , menu и т. Д. В андроиде NDK. Я использую Cocos2dX, поэтому, если бы вы могли дать мне специальный ответ Cocos2dX, это было бы здорово.

Solutions Collecting From Web of "Android NDK: Как обращаться с нажатием клавиши Back в Cocos2dx?"

В 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 . И каждый экран может дать реализацию этим функциям.

В Cocos2d-x Вы должны сделать это

  virtual void keyBackClicked(); 

И также

  this->setKeyPadEnable(true); 

В классе .cpp

Включить клавиатуру: 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"); } } 

Если ваш класс не наследуется от CClayer , вы можете справиться с этим через вызовы JNI . В Cocos2dxGLSurfaceView.java вы обрабатываете назад и клавишу меню из функции onKeyDown

 public boolean onKeyDown(final int pKeyCode, final KeyEvent pKeyEvent)