La domanda è tutto ciò che ho da dire al riguardo. Devo sapere come gestire i tasti speciali come back
, menu
ecc. In Android NDK. Sto usando Cocos2dX quindi se potessi darmi una risposta specifca su Cocos2dX sarebbe fantastico.NDK Android: come gestire la pressione del tasto Indietro in Cocos2dx?
5
A
risposta
7
In cocos2dx, ogni CCLayer
ottiene i seguenti metodi che possono essere sovrascritte per aggiungere funzionalità a loro:
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
eredita da CCKeypadDelegate
. E ogni schermo può dare attuazione a queste funzioni.
1
In Cocos2d-x quello che dovete fare che implementano
virtual void keyBackClicked();
e anche questo
this->setKeyPadEnable(true);
in classe cpp
1
Abilitazione tastiera: this->setKeypadEnabled(true);
Override onKeyReleased m etodo: virtual void onKeyReleased(EventKeyboard::KeyCode keyCode, Event* event);
Controllare 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");
}
}
0
Se la classe non è ereditare con CClayer
, allora si può gestire questo attraverso JNI
chiamate. In Cocos2dxGLSurfaceView.java
si maniglia posteriore e il tasto menu dal onKeyDown
funzione
public boolean onKeyDown(final int pKeyCode, final KeyEvent pKeyEvent)
Penso che potrebbe essere necessario aggiungere setKeypadEnabled (true); da qualche parte per farlo funzionare. –
Assicurati di utilizzare coco2d-x 2.1 o versione successiva. – Ankur