2013-06-02 1 views
2

Я хочу выйти из игры Cocos2d-x на кнопке на кнопке в Android. Для этого я перегрузил метод CCLayer::keyBackClicked в своем классе GameScene, и я также позвонил setKeypadEnabled(true) от GameScene::init. Тем не менее, метод keyBackClicked никогда не вызывается при нажатии кнопки «Назад», я проверил сообщение CCLog. Что еще мне нужно сделать, чтобы сделать эту работу? Я много искал эту тему и нашел решение выше, но оно не работает.Android back button не работает в Cocos2d-x

Вот мой код

bool GameScene:: init() { 
    if(CCLayer::init()) { 
     CCLog("Init"); 
     this->setKeypadEnabled(true); 
     return true; 
    } 
    return false; 
} 

void GameScene:: keyBackClicked(void) { 
    CCLayer::keyBackClicked(); 
    CCLOG("cclayer key back clicked"); 
    exit(0); 
} 

Пожалуйста, помогите.

+0

Пожалуйста, покажите нам свой код для этого. Насколько я знаю, вы описали то, что вам нужно сделать, чтобы поддержать кнопку «Назад». –

+0

вот мой codebool GameScene :: init() { if (CCLayer :: init()) { CCLog ("Init"); это-> комплектKeypadEnabled (true); return true; } return false; } – sanjayts

+0

void GameScene :: keyBackClicked (void) { CCLayer :: keyBackClicked(); \t CCLOG («клавиша cclayer back clicked»); выход (0); } – sanjayts

ответ

1

Если GameScene расширяет CCLayer класс -

void GameScene:: keyBackClicked(void) { 
    CCDirector::sharedDirector()->end(); 

    #if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS) 
     exit(0); 
    #endif 
} 

Я думаю, что это важно, чтобы закончить первый директор, а затем выйти.

0
void GameScene:: keyBackClicked(void) 
{ 
    CCLOG("cclayer key back clicked"); 
    exit(0); 
} 

также позволяют

this->setKeyPadEnable(true); 
+0

как это сделать с помощью cocos2d-x 3.2 –

1

Включение клавиатуры с помощью вызова this->setKeyPadEnable(true);

Override onKeyReleased метод:

void GameScene::onKeyReleased(EventKeyboard::KeyCode keyCode, cocos2d::Event *event) 
{ 
    // Back button pressed 
    if (keyCode == EventKeyboard::KeyCode::KEY_BACKSPACE) { 
     Director::getInstance()->end(); 
     exit(0); 
    } 
} 
0

keyBackClicked будет работать только если ваш класс (GameScene) наследуют от CCLayer в противном случае его не работает. Из вашего вопроса я думаю, что вы наследуете свой класс от CCScene, а не от CClayer, поэтому кнопка кнопки «Назад» не работает. Вы также можете управлять кнопкой возврата в функции «KeyDown» из Cocos2dxGLSurfaceView.java.

1

CCLayer добавить функцию делегата в вызове функции в OnEnter(), вам может понадобиться позвонить CCLayer :: OnEnter в GameScene :: OnEnter() или, возможно, вам нужно добавить его в другом месте.

CCLayer::onEnter 
// 
... 
    if (m_bKeypadEnabled) 
    { 
     pDirector->getKeypadDispatcher()->addDelegate(this); 
    } 
// 
...