2012-05-28 12 views

Odpowiedz

7

W cocos2dx każdy CCLayer pobiera następujące metody, które mogą być nadpisane dodać funkcję do nich:

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 dziedziczy CCKeypadDelegate. A każdy ekran może zapewnić implementację tych funkcji.

+2

myślę, że trzeba dodać setKeypadEnabled (true); gdzieś, żeby to działało. –

+1

Upewnij się, że używasz coco2d-x 2.1 lub nowszego. – Ankur

1

W cocos2d-x Trzeba zrobić wdrożyć

virtual void keyBackClicked(); 

a także to

this->setKeyPadEnable(true); 

w klasie .cpp

1

Włącz klawiaturę: this->setKeypadEnabled(true);

Zastąp onKeyReleased m ethod: virtual void onKeyReleased(EventKeyboard::KeyCode keyCode, Event* event);

Sprawdź 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

Jeśli klasa nie jest dziedziczą z CClayer, to można sobie z tym poradzić poprzez JNI połączeń. W Cocos2dxGLSurfaceView.java obsługiwać tyłu i klawisz menu z onKeyDown funkcji

public boolean onKeyDown(final int pKeyCode, final KeyEvent pKeyEvent) 
Powiązane problemy