void SceneBase::onKeyPressed(cocos2d::EventKeyboard::KeyCode keyCode, cocos2d::Event* event) { LOGAK("<onKeyPressed> keyCode:%d", keyCode); switch (keyCode) { case EventKeyboard::KeyCode::KEY_F1: case EventKeyboard::KeyCode::KEY_MENU: // for Android if (m_szHelp.empty()) cocos2d::MessageBox("No help is available for this page", "Help"); else cocos2d::MessageBox(m_szHelp.c_str(), "Help"); break; case EventKeyboard::KeyCode::KEY_ESCAPE: menuCloseCallback(NULL); return; case EventKeyboard::KeyCode::KEY_UP_ARROW: if (m_lastMenuIx > 0) m_lastMenuIx--; setMenuColor(m_lastMenuIx); break; case EventKeyboard::KeyCode::KEY_DOWN_ARROW: if (m_lastMenuIx < (int)m_menu.size()) m_lastMenuIx++; setMenuColor(m_lastMenuIx); break; case EventKeyboard::KeyCode::KEY_KP_ENTER: { g_menu_ix = m_lastMenuIx; if ((int)m_funcEnt.size()>m_lastMenuIx) { auto scene = m_funcEnt[m_lastMenuIx](); if (scene) { Director::getInstance()->replaceScene((cocos2d::Scene *)scene); this->removeAllChildren(); } } else { onNotImplemented(NULL); } } break; default: //SceneBase::onKeyPressed(keyCode, event); return; } }
Menu* MyMenu::CreateMenu() { //create menu auto MenuItem_Game = MenuItemFont::create("Start Game"); MenuItem_Game->setCallback([&](Ref *sender) { Director::getInstance()->replaceScene(TransitionFlipX::create(1, BlueScene::createScene())); }); auto MenuItem_About = MenuItemFont::create("About"); MenuItem_About->setCallback([&](Ref *sender) { //Director::getInstance()->replaceScene(TransitionFlipX::create(1, AboutScene::createScene())); }); auto MenuItem_Exit = MenuItemFont::create("Exit"); MenuItem_Exit->setCallback([&](Ref *sender) { menuCloseCallback(sender); }); Vector<MenuItem*> items; items.pushBack(MenuItem_Game); items.pushBack(MenuItem_About); items.pushBack(MenuItem_Exit); auto menu = Menu::createWithArray(items); menu->alignItemsVerticallyWithPadding(20); return menu; }
void EpisodeLockedScene::onKeyReleased(EventKeyboard::KeyCode keyCode, Event* event) { if (keyCode == EventKeyboard::KeyCode::KEY_ESCAPE) menuCloseCallback(this); }