2012-05-28 12 views

Respuesta

7

En cocos2dx, cada CCLayer obtiene los siguientes métodos que pueden ser evitado para agregar funcionalidad a ellos:

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 hereda de CCKeypadDelegate. Y cada pantalla puede dar implementación a estas funciones.

+2

Creo que es posible que tenga que añadir setKeypadEnabled (true); en algún lugar para que funcione. –

+1

Solo asegúrese de estar utilizando coco2d-x 2.1 o superior. – Ankur

1

En Cocos2d-x que tiene que hacer que implemento

virtual void keyBackClicked(); 

y también esta

this->setKeyPadEnable(true); 

en clase .cpp

1

Activar teclado: this->setKeypadEnabled(true);

Anulación onKeyReleased m étodo: virtual void onKeyReleased(EventKeyboard::KeyCode keyCode, Event* event);

Registro del código clave:

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

Si su clase no se heredan con CClayer, entonces usted puede manejar esto a través de JNI llamadas. En Cocos2dxGLSurfaceView.java manejas hacia atrás y tecla de menú de funciones onKeyDown

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