void GamePlayScene::initNavigator() { MenuItemFont *menuTitle = MenuItemFont::create(Constant::MENU_PLAY, CC_CALLBACK_1(GamePlayScene::navigatorCallback, this)); menuTitle->setFontName(Constant::FONT); menuTitle->setFontSize(64); menuTitle->setVisible(false); MenuItemFont *back = MenuItemFont::create(Constant::MENU_BACK, CC_CALLBACK_1(GamePlayScene::navigatorCallback, this)); back->setFontName(Constant::FONT); back->setFontSize(64); back->setTag(Constant::MENU_BACK_TAG); MenuItemFont *start = MenuItemFont::create(Constant::MENU_START, CC_CALLBACK_1(GamePlayScene::navigatorCallback, this)); start->setFontName(Constant::FONT); start->setFontSize(64); start->setTag(Constant::MENU_START_TAG); Menu *menu = Menu::create(back, start, NULL); Size visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); back->setPosition(Vec2(origin.x + visibleSize.width - back->getContentSize().width / 2, origin.y + back->getContentSize().height / 2)); start->setPosition(Vec2(origin.x + start->getContentSize().width / 2, origin.y + back->getContentSize().height / 2)); menu->setPosition(Vec2::ZERO); addChild(menu); }
// on "init" you need to initialize your instance bool HelloWorld::init() { ////////////////////////////// // 1. super init first if ( !Layer::init() ) { return false; } // auto rootNode = CSLoader::createNode("MainScene.csb"); // // addChild(rootNode); // Sprite *s = Sprite::create("whah"); // this->addChild(s); // MenuItemFont *item = MenuItemFont::create("ylyTest 按钮 01"); // // Menu *m = Menu::create(item,NULL); // // this->addChild(m); // // return true; //} // Vec2 winSize = Director::getInstance()->getWinSize(); // 可见视图大小 // Size visiblesSize = Director::getInstance()->getVisibleSize(); MenuItemFont *item = MenuItemFont::create("开始游戏",CC_CALLBACK_1(HelloWorld::onMenuItem,this)); MenuItemFont *gameMap = MenuItemFont::create("游戏地图",CC_CALLBACK_1(HelloWorld::onMenuItemGameMap,this)); // gameMap->setPosition(Vec2(visiblesSize.width/2, visiblesSize.height/2-30)); // gameMap->setAnchorPoint(Vec2(visiblesSize.width/2, visiblesSize.height/2-30)); // 锚点和位置 // gameMap->setAnchorPoint(Vec2::ZERO); gameMap->setPosition(Vec2(0.0, -50)); MenuItemFont *myGame = MenuItemFont::create("myGame",CC_CALLBACK_1(HelloWorld::onMenuItemMyGame,this)); myGame->setPosition(Vec2(0.0, -100)); MenuItemFont *testMyGameA = MenuItemFont::create("testMyGameA*",CC_CALLBACK_1(HelloWorld::onMenuItemTestMyGame,this)); testMyGameA->setPosition(Vec2(0.0, -150)); Menu *menu = Menu::create(item,gameMap,myGame,testMyGameA,NULL); this->addChild(menu); return true; }
// on "init" you need to initialize your instance bool TableViewTestLayer::init() { if ( !Layer::init() ) { return false; } Size winSize = Director::sharedDirector()->getWinSize(); TableView* tableView = TableView::create(this, CCSizeMake(250, 60)); tableView->setDirection(kScrollViewDirectionHorizontal); tableView->setPosition(ccp(20,winSize.height/2-30)); tableView->setDelegate(this); this->addChild(tableView); tableView->reloadData(); tableView = TableView::create(this, CCSizeMake(60, 250)); tableView->setDirection(kScrollViewDirectionVertical); tableView->setPosition(ccp(winSize.width-150,winSize.height/2-120)); tableView->setDelegate(this); tableView->setVerticalFillOrder(kTableViewFillTopDown); this->addChild(tableView); tableView->reloadData(); // Back Menu MenuItemFont *itemBack = MenuItemFont::create("Back", CC_CALLBACK_1(TableViewTestLayer::toExtensionsMainLayer, this)); itemBack->setPosition(ccp(VisibleRect::rightBottom().x - 50, VisibleRect::rightBottom().y + 25)); Menu *menuBack = Menu::create(itemBack, NULL); menuBack->setPosition(PointZero); addChild(menuBack); return true; }
// Menus void GameLevelLayer::gameOver(bool playerDidWin) { m_isGameOver = true; std::string gameText; if (playerDidWin) { gameText = "You Won!"; } else { gameText = "You have Died!"; CocosDenshion::SimpleAudioEngine::getInstance()->playEffect("hurt.wav"); } Menu* pMenu = CCMenu::create(); pMenu->setPosition(Vec2(240, -100)); MenuItemFont *diedLabel = MenuItemFont::create(gameText); diedLabel->setFontName("Marker Felt"); diedLabel->setFontSize(24); diedLabel->setPosition(Vec2(240, 200)); pMenu->addChild(diedLabel); MoveBy *slideIn = MoveBy::create(1.0, Vec2(0,250)); MenuItemImage *replay = MenuItemImage::create("replay.png", "replay.png", "replay.png"); replay->setPosition(Point::ZERO); replay->setCallback(CC_CALLBACK_1(GameLevelLayer::replayButtonCallback, this)); pMenu->addChild(replay); this->addChild(pMenu, 1); pMenu->runAction(slideIn); }
// on "init" you need to initialize your instance bool TableViewTestLayer::init() { if ( !Layer::init() ) { return false; } Size winSize = Director::getInstance()->getWinSize(); TableView* tableView = TableView::create(this, Size(250, 60)); tableView->setDirection(ScrollView::Direction::HORIZONTAL); tableView->setPosition(Point(20,winSize.height/2-30)); tableView->setDelegate(this); this->addChild(tableView); tableView->reloadData(); tableView = TableView::create(this, Size(60, 250)); tableView->setDirection(ScrollView::Direction::VERTICAL); tableView->setPosition(Point(winSize.width-150,winSize.height/2-120)); tableView->setDelegate(this); tableView->setVerticalFillOrder(TableView::VerticalFillOrder::TOP_DOWN); this->addChild(tableView); tableView->reloadData(); // Back Menu MenuItemFont *itemBack = MenuItemFont::create("Back", CC_CALLBACK_1(TableViewTestLayer::toExtensionsMainLayer, this)); itemBack->setPosition(Point(VisibleRect::rightBottom().x - 50, VisibleRect::rightBottom().y + 25)); Menu *menuBack = Menu::create(itemBack, NULL); menuBack->setPosition(Point::ZERO); addChild(menuBack); return true; }
// on "init" you need to initialize your instance bool HelloWorld::init() { ////////////////////////////// // 1. super init first if ( !Layer::init() ) { return false; } Size visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); ///////////////////////////// // 2. add a menu item with "X" image, which is clicked to quit the program // you may modify it. // add a "close" icon to exit the progress. it's an autorelease object // auto closeItem = MenuItemImage::create( // "CloseNormal.png", // "CloseSelected.png", // CC_CALLBACK_1(HelloWorld::menuCloseCallback, this)); // //closeItem->setPosition(Vec2(origin.x + visibleSize.width - closeItem->getContentSize().width/2 , // origin.y + closeItem->getContentSize().height/2)); MenuItemFont* buttonItem = MenuItemFont::create("menu item font", CC_CALLBACK_1(HelloWorld::showNewLayer, this)); buttonItem->setPosition(visibleSize.width/2, visibleSize.height/2); // create menu, it's an autorelease object auto menu = Menu::create(buttonItem, NULL); menu->setPosition(Vec2::ZERO); this->addChild(menu, 1); ///////////////////////////// // 3. add your codes below... // add a label shows "Hello World" // create and initialize a label auto label = Label::createWithTTF("Hello World", "fonts/Marker Felt.ttf", 24); // position the label on the center of the screen label->setPosition(Vec2(origin.x + visibleSize.width/2, origin.y + visibleSize.height - label->getContentSize().height)); // add the label as a child to this layer this->addChild(label, 1); // add "HelloWorld" splash screen" auto sprite = Sprite::create("HelloWorld.png"); // position the sprite on the center of the screen sprite->setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y)); // add the sprite as a child to this layer this->addChild(sprite, 0); return true; }
void UI::createLevelEditorFilePopup() { Size visibleSize = Director::getInstance()->getVisibleSize(); MenuItemFont* addTextureObject = MenuItemFont::create("choose file", CC_CALLBACK_0(UI::nullCallback, this)); addTextureObject->setFontNameObj("Segoe UI"); addTextureObject->setFontSizeObj(34); addTextureObject->setPosition(visibleSize.width * 0.5f, visibleSize.height - 30); MenuItemFont* scrollUpObject = MenuItemFont::create("up", CC_CALLBACK_0(LevelEditor::moveFileSelectUpCallback, pLevelEditor)); scrollUpObject->setFontNameObj("Segoe UI"); scrollUpObject->setFontSizeObj(34); scrollUpObject->setPosition(visibleSize.width - 50, visibleSize.height - 30); MenuItemFont* scrollDownObject = MenuItemFont::create("down", CC_CALLBACK_0(LevelEditor::moveFileSelectDownCallback, pLevelEditor)); scrollDownObject->setFontNameObj("Segoe UI"); scrollDownObject->setFontSizeObj(34); scrollDownObject->setPosition(visibleSize.width - 50, 30); MenuItemImage* scrollBackground = MenuItemImage::create("Resources/pictures/generic/ui_background.png", "ui_background.png", CC_CALLBACK_0(UI::nullCallback, this)); scrollBackground->setPosition(visibleSize.width * 0.5f, visibleSize.height * 0.5f); scrollBackground->setScale(400, visibleSize.height); int paddingTop = 60; Vector<MenuItem*> lMenuItems; lMenuItems.pushBack(addTextureObject); for (string s : getAllFilesInFolder("Resources/pictures/tiles")) { MenuItemFont* menuItem = MenuItemFont::create(s, CC_CALLBACK_1(LevelEditor::chooseFileCallback, pLevelEditor, s, levelType)); menuItem->setFontNameObj("Segoe UI"); menuItem->setFontSizeObj(24); menuItem->setPosition(visibleSize.width * 0.5f, visibleSize.height - paddingTop); paddingTop += 30; lMenuItems.pushBack(menuItem); } auto menu = Menu::createWithArray(lMenuItems); auto scrollMenu = Menu::create(scrollBackground, scrollDownObject, scrollUpObject, NULL); scrollMenu->retain(); scrollMenu->setPosition(0, 0); menu->retain(); menu->setPosition(0, 0); m_pLevelEditor->addChild(menu); m_pLevelEditor->addChild(scrollMenu, -10); pLevelEditor->ChooseFileMenu = menu; pLevelEditor->ChooseFileNavMenu = scrollMenu; }
// on "init" you need to initialize your instance bool HelloWorld::init() { if ( !Layer::init() ) { return false; } Size visibleSize = Director::getInstance()->getVisibleSize(); MenuItemFont* pIncrease = MenuItemFont::create("increase 20",CC_CALLBACK_1(HelloWorld::increaseCallback,this)); pIncrease->setAnchorPoint(Vec2(0.0f,1.0f)); pIncrease->setPosition(0.0f,visibleSize.height - 0.0f); MenuItemFont* pReduce = MenuItemFont::create("reduce 20",CC_CALLBACK_1(HelloWorld::reduceCallback,this)); pReduce->setAnchorPoint(Vec2(0.0f,1.0f)); pReduce->setPosition(0.0f,visibleSize.height - 40.0f); MenuItemFont* pGoto = MenuItemFont::create("goto 100",CC_CALLBACK_1(HelloWorld::gotoCallback,this)); pGoto->setAnchorPoint(Vec2(0.0f,1.0f)); pGoto->setPosition(0.0f,visibleSize.height - 80.0f); Menu* pMenu = Menu::create(pIncrease,pReduce,pGoto, NULL); pMenu->setPosition(Vec2(0.0f,0.0f)); this->addChild(pMenu, 1); LabelAtlas* pNumber = LabelAtlas::create("","number.png",55,84,'0'); pNumber->setAnchorPoint(Vec2(0.5f,0.5f)); pNumber->setPosition(Vec2(visibleSize.width/2.0f, visibleSize.height/2.0f)); this->addChild(pNumber); m_numberCount.setLabelAtlas(pNumber); //如果是从cocostudio导出的话请调用NumberCount::setTextAtlas //将数字每一步的增量初始化为3 m_numberCount.setNumberDelta(3); //将数字增加时间间隔设置为0.1秒 m_numberCount.setTimeDelta(0.1f); //将数字初始化为100 m_numberCount.setNumber(100,false); return true; }
// ゲームメイン処理 void PlayScene::gameLogic(){ // 画像描画用に画面のサイズと座標開始位置を取得 Size visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); // ゲームオブジェクトの追加とそのアニメーション処理 schedule(schedule_selector(PlayScene::addGameObject), 2.0); // クリアボタン作成 MenuItemFont* clearButton = MenuItemFont::create("CLEAR!", [this](Ref *pSender){ float duration = 1.0f; Scene* pScene = TransitionFadeDown::create(duration, EndingScene::createScene()); Director::getInstance()->replaceScene(pScene); }); clearButton->setPosition(Vec2(origin.x + ( visibleSize.width / 3) * 2 + ( clearButton->getContentSize().width / 2 ) , origin.y + ( visibleSize.height / 5) * 2 )); // ゲームオーバーボタン作成 MenuItemFont* gameOverButton = MenuItemFont::create("GAMEOVER!", [this](Ref *pSender){ float duration = 1.0f; Scene* pScene = TransitionJumpZoom::create(duration, GameOverScene::createScene()); Director::getInstance()->replaceScene(pScene); }); gameOverButton->setPosition(Vec2(origin.x + ( visibleSize.width / 3) * 2 + ( gameOverButton->getContentSize().width / 2 ) , origin.y + ( visibleSize.height / 5) * 3)); // 作成したボタンの追加 Menu* menu = Menu::create(clearButton, gameOverButton, NULL); menu->setPosition(0,0); this->addChild(menu); }
// on "init" you need to initialize your instance bool TestIAP::init() { ////////////////////////////// // 1. super init first if ( !Layer::init() ) { return false; } MyPurchase::getInstance()->loadIAPPlugin(); ///////////////////////////// // 2. add a menu item with "X" image, which is clicked to quit the program // you may modify it. auto pEGLView = Director::getInstance()->getOpenGLView(); Point posBR = Point(pEGLView->getVisibleOrigin().x + pEGLView->getVisibleSize().width, pEGLView->getVisibleOrigin().y); Point posTL = Point(pEGLView->getVisibleOrigin().x, pEGLView->getVisibleOrigin().y + pEGLView->getVisibleSize().height); // add a "close" icon to exit the progress. it's an autorelease object MenuItemFont *pBackItem = MenuItemFont::create("Back", CC_CALLBACK_1(TestIAP::menuBackCallback, this)); Size backSize = pBackItem->getContentSize(); pBackItem->setPosition(posBR + Point(- backSize.width / 2, backSize.height / 2)); // create menu, it's an autorelease object Menu* pMenu = Menu::create(pBackItem, NULL); pMenu->setPosition( Point::ZERO ); this->addChild(pMenu, 1); Point posStep = Point(220, -150); Point beginPos = posTL + (posStep * 0.5f); int line = 0; int row = 0; for (int i = 0; i < sizeof(s_EventMenuItem)/sizeof(s_EventMenuItem[0]); i++) { MenuItemImage* pMenuItem = MenuItemImage::create(s_EventMenuItem[i].id.c_str(), s_EventMenuItem[i].id.c_str(), CC_CALLBACK_1(TestIAP::eventMenuCallback, this)); pMenu->addChild(pMenuItem, 0, s_EventMenuItem[i].tag); Point pos = beginPos + Point(posStep.x * row, posStep.y * line); Size itemSize = pMenuItem->getContentSize(); if ((pos.x + itemSize.width / 2) > posBR.x) { line += 1; row = 0; pos = beginPos + Point(posStep.x * row, posStep.y * line); } row += 1; pMenuItem->setPosition(pos); } return true; }
bool MDPauseMenu::init(MDPauseMenuInterfaz* target) { if (CCLayerColor::initWithColor(ccc4(0, 0, 0, 200)) ) { mTarget = target; Size visibleSize = Director::getInstance()->getVisibleSize(); // Menu items MenuItemFont *btResume = MenuItemFont::create("Resume", this, menu_selector(MDPauseMenu::resumeGame)); btResume->setColor(ccc3(255, 255, 255)); btResume->setAnchorPoint(ccp(0.5, 1)); btResume->setPosition(ccp(0, 0)); MenuItemFont *btRetry = MenuItemFont::create("Retry", this, menu_selector(MDPauseMenu::retryGame)); btRetry->setColor(ccc3(255, 255, 255)); btRetry->setAnchorPoint(ccp(0.5, 1)); btRetry->setPosition(ccp(0, btResume->getPosition().y - btResume->getContentSize().height - MENU_ITEMS_SPACING)); MenuItemFont *btExit = MenuItemFont::create("Exit", this, menu_selector(MDPauseMenu::quitGame)); btExit->setColor(ccc3(255, 255, 255)); btExit->setAnchorPoint(ccp(0.5, 1)); btExit->setPosition(ccp(0, btRetry->getPosition().y - btRetry->getContentSize().height - MENU_ITEMS_SPACING)); // Menu Menu *menu = Menu::create(btResume, btRetry, btExit, NULL); menu->setPosition(ccp(visibleSize.width / 2, visibleSize.height / 2)); addChild(menu); return true; } return false; }
bool PauseLayer::init() { if (!Layer::init()) { return false; } const Size &size=Director::getInstance()->getWinSize(); //灰色背景 LayerColor* backLayerColor = LayerColor::create(Color4B(25, 25, 25, 125)); this->addChild(backLayerColor); // 暂停 MenuItemFont *menuItemPause = MenuItemFont::create("Continue", CC_CALLBACK_1(PauseLayer::menuContinueCallBack, this)); menuItemPause->setPosition(Point(size.width / 2 - 100, size.height / 2)); // 重新开始 MenuItemFont *menuItemRestart = MenuItemFont::create("Restart", CC_CALLBACK_1(PauseLayer::menuRestartCallBack, this)); menuItemRestart->setPosition(Point(size.width / 2 + 100, size.height / 2)); Menu *menu=Menu::create(menuItemPause, menuItemRestart, NULL); menu->setPosition(Point::ZERO); this->addChild(menu); //不声明 不定义 ontouchbegan的使用方法 // auto callback = [](Touch * ,Event *) // { // return true; // }; // auto listener = EventListenerTouchOneByOne::create(); // listener->onTouchBegan = callback; // listener->setSwallowTouches(true); // _eventDispatcher->addEventListenerWithSceneGraphPriority(listener,this); EventListenerTouchOneByOne* listener = EventListenerTouchOneByOne::create(); listener->onTouchBegan = CC_CALLBACK_2(PauseLayer::onTouchBegan, this); listener->setSwallowTouches(true); _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); return true; }
// on "init" you need to initialize your instance bool TestAnalytics::init() { ////////////////////////////// // 1. super init first if ( !Layer::init() ) { return false; } _pluginAnalytics = NULL; loadPlugins(); Size visibleSize = Director::getInstance()->getVisibleSize(); Point origin = Director::getInstance()->getVisibleOrigin(); Point posBR = Point(origin.x + visibleSize.width, origin.y); ///////////////////////////// // 2. add a menu item with "X" image, which is clicked to quit the program // you may modify it. // add a "close" icon to exit the progress. it's an autorelease object MenuItemFont *pBackItem = MenuItemFont::create("Back", CC_CALLBACK_1(TestAnalytics::menuBackCallback, this)); Size backSize = pBackItem->getContentSize(); pBackItem->setPosition(posBR + Point(- backSize.width / 2, backSize.height / 2)); // create menu, it's an autorelease object Menu* pMenu = Menu::create(pBackItem, NULL); pMenu->setPosition( Point::ZERO ); this->addChild(pMenu, 1); float yPos = 0; for (int i = 0; i < sizeof(s_EventMenuItem)/sizeof(s_EventMenuItem[0]); i++) { LabelTTF* label = LabelTTF::create(s_EventMenuItem[i].id.c_str(), "Arial", 24); MenuItemLabel* pMenuItem = MenuItemLabel::create(label, CC_CALLBACK_1(TestAnalytics::eventMenuCallback, this)); pMenu->addChild(pMenuItem, 0, s_EventMenuItem[i].tag); yPos = visibleSize.height - 35*i - 100; pMenuItem->setPosition( Point(visibleSize.width / 2, yPos)); } std::string strName = _pluginAnalytics->getPluginName(); std::string strVer = _pluginAnalytics->getSDKVersion(); char ret[256] = { 0 }; sprintf(ret, "Plugin : %s, Ver : %s", strName.c_str(), strVer.c_str()); LabelTTF* pLabel = LabelTTF::create(ret, "Arial", 18, Point(visibleSize.width, 0), Label::HAlignment::CENTER); pLabel->setPosition(Point(visibleSize.width / 2, yPos - 80)); addChild(pLabel); return true; }
bool ListLayer::init() { ////////////////////////////// // 1. super init first if ( !Layer::init() ) { return false; } Size visibleSize = Director::getInstance()->getVisibleSize(); Point origin = Director::getInstance()->getVisibleOrigin(); Point posMid = Point(origin.x + visibleSize.width / 2, origin.y + visibleSize.height / 2); Point posBR = Point(origin.x + visibleSize.width, origin.y); Point posBL = Point(origin.x, origin.y); MenuItemFont *pBackItem = MenuItemFont::create("Back", CC_CALLBACK_1(ListLayer::onBackCallback, this)); Size backSize = pBackItem->getContentSize(); pBackItem->setPosition(posBR + Point(- backSize.width / 2, backSize.height / 2)); MenuItemFont *pMenuItem = MenuItemFont::create("Menu", CC_CALLBACK_1(ListLayer::onMenuCallback, this)); Size menuSize = pMenuItem->getContentSize(); pMenuItem->setPosition(posBL + Point(menuSize.width / 2, menuSize.height / 2)); Menu* pMenu = Menu::create(pBackItem, pMenuItem, nullptr); pMenu->setPosition(Point::ZERO); addChild(pMenu, 1); _testListView = TableView::create(this, visibleSize); _testListView->setDelegate(this); _testListView->setPosition(posBL); _testListView->setVerticalFillOrder(TableView::VerticalFillOrder::TOP_DOWN); addChild(_testListView); return true; }
void StoreScene::showInGameMenuLayer() { Size winSize = Director::getInstance()->getWinSize(); InGameMenuLayer* _inGameMenuLayer = InGameMenuLayer::create(); addChild(_inGameMenuLayer); MenuItemFont *menuButton = MenuItemFont::create("Menu", this,menu_selector(StoreScene::menuButtonCallback)); menuButton->setColor(Color3B(0,0,0)); menuButton->setPosition(Point(winSize.width - menuButton->getContentSize().width, winSize.height - menuButton->getContentSize().height)); Menu *pMenu = Menu::create(menuButton,NULL); pMenu->setPosition(Point::ZERO); _inGameMenuLayer->addChild(pMenu, 1); }
bool PlayersSelectLayer::init() { if (!Layer::init()) return false; //return true; Size visibleSize = Director::sharedDirector()->getVisibleSize(); Menu* menu = Menu::create(); // Add all possibilities int position = 0; for(unsigned int i = 1; i <= 2; i++ ) { std::string label = std::to_string(i); label += (i == 1) ? " Player" : " Players"; ccMenuCallback callback = std::bind(&PlayersSelectLayer::newGame, this, this, i); MenuItemFont *newLevel = new MenuItemFont(); newLevel->initWithString( label.c_str(), callback ); newLevel->setPosition(ccp(0, position)); menu->addChild(newLevel); position -= 50; } // Add menu to layer this->addChild(menu, 1); menu->setPosition( ccp( visibleSize.width/2, visibleSize.height - 100 ) ); this->setTouchEnabled(true); return true; }
// on "init" you need to initialize your instance bool HelloWorld::init() { ////////////////////////////// // 1. super init first if ( !Layer::init() ) { return false; } Size visibleSize = Director::getInstance()->getVisibleSize(); Point origin = Director::getInstance()->getVisibleOrigin(); ///////////////////////////// // 2. add a menu item with "X" image, which is clicked to quit the program // you may modify it. // add a "close" icon to exit the progress. it's an autorelease object MenuItemImage *pCloseItem = MenuItemImage::create( "CloseNormal.png", "CloseSelected.png", CC_CALLBACK_1(HelloWorld::menuCloseCallback, this)); pCloseItem->setPosition(Point(origin.x + visibleSize.width - pCloseItem->getContentSize().width/2 , origin.y + pCloseItem->getContentSize().height/2)); // create menu, it's an autorelease object Menu* pMenu = Menu::create(pCloseItem, NULL); pMenu->setPosition(Point::ZERO); this->addChild(pMenu, 1); Point beginPos = Point(origin.x + visibleSize.width / 2, origin.y + visibleSize.height - 50); float step = 60.0f; int nCaseCount = sizeof(g_testCases) / sizeof(std::string); for (int i = 0; i < nCaseCount; ++i) { std::string caseName = g_testCases[i]; MenuItemFont *pItem = MenuItemFont::create(caseName.c_str(), CC_CALLBACK_1(HelloWorld::menuCallback, this)); pItem->setTag(i); pItem->setPosition(Point(beginPos.x, beginPos.y - i * step)); pMenu->addChild(pItem); } return true; }
void MenuScene::onLoadScene() { m_vMenuItems.push_back("Basic Test"); Size tContainerSize = Size(700, 100 * m_vMenuItems.size()); Layer* pScrollViewContainer = Layer::create(); pScrollViewContainer->setPosition(Point::ZERO); pScrollViewContainer->setContentSize(tContainerSize); m_pScrollView = ScrollView::create(Size(700, 640)); m_pScrollView->ignoreAnchorPointForPosition(false); m_pScrollView->setPosition(CCPoint(480, 320)); m_pScrollView->setContainer(pScrollViewContainer); addChild(m_pScrollView); Vector<MenuItem *> vet; float height = tContainerSize.height; unsigned int i = 0; unsigned int end = m_vMenuItems.size(); for(; i < end; ++i ) { MenuItemFont* pFont = MenuItemFont::create(m_vMenuItems[i].c_str()); pFont->setCallback(CC_CALLBACK_1(MenuScene::onClick,this)); pFont->setFontSizeObj(45.0f); pFont->setPosition(Point(700 / 2, height - 100 / 2)); pFont->setTag(i + 1); vet.pushBack(pFont); height -= 100; } Menu* pMenu = Menu::createWithArray(vet); pMenu->setPosition(Point(0,0)); pScrollViewContainer->addChild(pMenu); m_pScrollView->setContentOffset(Point(0, -(tContainerSize.height - 640))); }
void Picking::displayUI() { eventHandler(); displayHP(); for (int i = 0; i < 4; i++) { m_glow[i] = Sprite::create("img/UI/battle/glow.png"); m_glow[i]->setScale(m_Mag*0.5); m_glow[i]->setPosition(Vec2(m_visibleSize.width / 8 * (((i + 1) * 1.5) + 1), m_cards[1]->getPositionY())); m_glow[i]->setZOrder(2); m_glow[i]->setTag(5); m_instance->addChild(m_glow[i]); } //instructions to reshuffle instructions = Label::createWithTTF("いらないカードをシャッフルしよう!", "fonts/ant-maru.ttf", 55); instructions->enableOutline(Color4B::BLACK, 2); instructions->setPosition(Vec2(m_visibleSize.width / 2, m_visibleSize.height /2.4)); m_instance->addChild(instructions); auto Label = Label::createWithTTF("<< Enemy Card", "fonts/arial.ttf", 25); Label->setColor(Color3B::RED); Label->enableOutline(Color4B::BLACK, 2); Label->setPosition(Vec2(m_enemyCard->getPosition().x * 0.9, m_enemyCard->getBoundingBox().getMaxY())); Label->setName("EnemyCard"); //m_instance->addChild(Label); MenuItemFont::setFontSize(80); MenuItemFont* goItem = MenuItemFont::create("Go!", CC_CALLBACK_1(Picking::startBattle, this)); auto label = Label::createWithTTF("GO!", "fonts/ant-maru.ttf", 60); label->enableOutline(Color4B::RED, 2); goItem->setLabel(label); goItem->setPosition(Vec2(m_visibleSize.width / 1.15, m_visibleSize.height / 2)); m_menu = Menu::create(goItem, NULL); m_menu->setPosition(Point::ZERO); m_instance->addChild(m_menu); }
cocos2d::Node* SceneEditorTestLayer::createGameScene() { Node *pNode = SceneReader::getInstance()->createNodeWithSceneFile("scenetest/FishJoy2.json"); if (pNode == NULL) { return NULL; } _curNode = pNode; MenuItemFont *itemBack = MenuItemFont::create("Back", CC_CALLBACK_1(SceneEditorTestLayer::toExtensionsMainLayer, this)); itemBack->setColor(Color3B(255, 255, 255)); itemBack->setPosition(Point(VisibleRect::rightBottom().x - 50, VisibleRect::rightBottom().y + 25)); Menu *menuBack = Menu::create(itemBack, NULL); menuBack->setPosition(Point(0.0f, 0.0f)); menuBack->setZOrder(4); pNode->addChild(menuBack); //ui action cocos2d::extension::ActionManagerEx::shareManager()->playActionByName("startMenu_1.json","Animation1"); return pNode; }
// on "init" you need to initialize your instance bool TestSocial::init() { ////////////////////////////// // 1. super init first if ( !Layer::init() ) { return false; } MySocialManager::getInstance()->loadPlugins(); Size visibleSize = Director::getInstance()->getVisibleSize(); Point origin = Director::getInstance()->getVisibleOrigin(); Point posMid = Point(origin.x + visibleSize.width / 2, origin.y + visibleSize.height / 2); Point posBR = Point(origin.x + visibleSize.width, origin.y); MenuItemFont *pBackItem = MenuItemFont::create("Back", CC_CALLBACK_1(TestSocial::menuBackCallback, this)); Size backSize = pBackItem->getContentSize(); pBackItem->setPosition(posBR + Point(- backSize.width / 2, backSize.height / 2)); // create menu, it's an autorelease object Menu* pMenu = Menu::create(pBackItem, NULL); pMenu->setPosition( Point::ZERO ); LabelTTF* label1 = LabelTTF::create("Submit Score", "Arial", 28); MenuItemLabel* pItemSubmit = MenuItemLabel::create(label1, CC_CALLBACK_1(TestSocial::testSubmit, this)); pItemSubmit->setAnchorPoint(Point(0.5f, 0)); pMenu->addChild(pItemSubmit, 0); pItemSubmit->setPosition(posMid + Point(-140, -60)); LabelTTF* label2 = LabelTTF::create("Unlock Achievement", "Arial", 28); MenuItemLabel* pItemUnlock = MenuItemLabel::create(label2, CC_CALLBACK_1(TestSocial::testUnlock, this)); pItemUnlock->setAnchorPoint(Point(0.5f, 0)); pMenu->addChild(pItemUnlock, 0); pItemUnlock->setPosition(posMid + Point(140, -60)); LabelTTF* label3 = LabelTTF::create("Show Leaderboard", "Arial", 28); MenuItemLabel* pItemLeader = MenuItemLabel::create(label3, CC_CALLBACK_1(TestSocial::testLeaderboard, this)); pItemLeader->setAnchorPoint(Point(0.5f, 0)); pMenu->addChild(pItemLeader, 0); pItemLeader->setPosition(posMid + Point(-140, -120)); LabelTTF* label4 = LabelTTF::create("Show Achievement", "Arial", 28); MenuItemLabel* pItemAchi = MenuItemLabel::create(label4, CC_CALLBACK_1(TestSocial::testAchievement, this)); pItemAchi->setAnchorPoint(Point(0.5f, 0)); pMenu->addChild(pItemAchi, 0); pItemAchi->setPosition(posMid + Point(140, -120)); // create optional menu // cases item _caseItem = MenuItemToggle::createWithCallback(NULL, MenuItemFont::create( s_aTestCases[0].c_str() ), NULL ); int caseLen = sizeof(s_aTestCases) / sizeof(std::string); for (int i = 1; i < caseLen; ++i) { _caseItem->getSubItems().pushBack( MenuItemFont::create( s_aTestCases[i].c_str() ) ); } _caseItem->setPosition(posMid + Point(0, 120)); pMenu->addChild(_caseItem); this->addChild(pMenu, 1); return true; }
void UI::createLevelEditorUI() { Size visibleSize = Director::getInstance()->getVisibleSize(); auto labelMenuTitle = LabelTTF::create("Level Editor", "Segoe UI", 12); labelMenuTitle->setPosition(35.0f, visibleSize.height - 40.0f); m_pLevelEditor->addChild(labelMenuTitle); MenuItemImage* sidebarBackground = MenuItemImage::create("Resources/pictures/generic/ui_background.png", "ui_background.png", CC_CALLBACK_0(UI::nullCallback, this)); sidebarBackground->setPosition(100.0f, visibleSize.height * 0.5f); sidebarBackground->setScale(200, visibleSize.height); MenuItemFont* addTextureObject = MenuItemFont::create("add texture", CC_CALLBACK_1(LevelEditor::addTextureObjectCallback, pLevelEditor)); addTextureObject->setFontNameObj("Arial"); addTextureObject->setFontSizeObj(30); addTextureObject->setPosition(80.0f, visibleSize.height - 80.0f); MenuItemFont* addGroundObject = MenuItemFont::create("add ground", CC_CALLBACK_1(LevelEditor::addGroundObjectCallback, pLevelEditor)); addGroundObject->setFontNameObj("Arial"); addGroundObject->setFontSizeObj(30); addGroundObject->setPosition(80.0f, visibleSize.height - 120.0f); MenuItemFont* addNutObject = MenuItemFont::create("add nut", CC_CALLBACK_1(LevelEditor::addNutObjectCallback, pLevelEditor)); addNutObject->setFontNameObj("Arial"); addNutObject->setFontSizeObj(30); addNutObject->setPosition(80.0f, visibleSize.height - 160.0f); MenuItemFont* addCrystalObject = MenuItemFont::create("add crystal", CC_CALLBACK_1(LevelEditor::addCrystalObjectCallback, pLevelEditor)); addCrystalObject->setFontNameObj("Arial"); addCrystalObject->setFontSizeObj(30); addCrystalObject->setPosition(80.0f, visibleSize.height - 200.0f); MenuItemFont* addAirObject = MenuItemFont::create("add aircurrent", CC_CALLBACK_1(LevelEditor::addAirObjectCallback, pLevelEditor)); addAirObject->setFontNameObj("Arial"); addAirObject->setFontSizeObj(30); addAirObject->setPosition(80.0f, visibleSize.height - 240.0f); MenuItemFont* changeLayerObject = MenuItemFont::create("mainLayer", CC_CALLBACK_0(LevelEditor::changeLayerCallback, pLevelEditor)); changeLayerObject->setFontNameObj("Arial"); changeLayerObject->setFontSizeObj(30); changeLayerObject->setPosition(73.0f, visibleSize.height - 280.0f); changeLayerObject->setTag(111); MenuItemFont* toggleGrid = MenuItemFont::create("snap to grid", CC_CALLBACK_0(LevelEditor::toggleGridCallback, pLevelEditor)); toggleGrid->setFontNameObj("Arial"); toggleGrid->setFontSizeObj(30); toggleGrid->setPosition(80.0f, visibleSize.height - 320.0f); toggleGrid->setTag(112); MenuItemFont* toggleSelectionMode = MenuItemFont::create("selection", CC_CALLBACK_0(LevelEditor::toggleSelectionMode, pLevelEditor)); toggleSelectionMode->setFontNameObj("Arial"); toggleSelectionMode->setFontSizeObj(30); toggleSelectionMode->setPosition(80.0f, visibleSize.height - 360.0f); toggleSelectionMode->setTag(113); MenuItemFont* saveLevelObject = MenuItemFont::create("save level", CC_CALLBACK_0(LevelEditor::saveLevelCallback, pLevelEditor)); saveLevelObject->setFontNameObj("Arial"); saveLevelObject->setFontSizeObj(30); saveLevelObject->setPosition(70.0f, visibleSize.height - 400.0f); MenuItemFont* mainMenuObject = MenuItemFont::create("Mainmenu", CC_CALLBACK_0(LevelEditor::mainMenuCallback, pLevelEditor)); mainMenuObject->setFontNameObj("Arial"); mainMenuObject->setFontSizeObj(30); mainMenuObject->setPosition(70.0f, visibleSize.height - 440.0f); auto menu = Menu::create(addTextureObject, addGroundObject, addNutObject, addCrystalObject, addAirObject, changeLayerObject, toggleSelectionMode, saveLevelObject, toggleGrid, mainMenuObject, NULL); auto menuBackground = Menu::create(sidebarBackground, NULL); menuBackground->setPosition(0, 0); menu->setPosition(0, 0); m_pLevelEditor->addChild(menu); m_pLevelEditor->addChild(menuBackground, -10); pLevelEditor->MainMenu = menu; }
void LabelMainScene::initWithSubTest(int nodes) { //srandom(0); auto s = Director::getInstance()->getWinSize(); _lastRenderedCount = 0; _quantityNodes = 0; _accumulativeTime = 0.0f; _labelContainer = Layer::create(); addChild(_labelContainer); MenuItemFont::setFontSize(65); auto decrease = MenuItemFont::create(" - ", CC_CALLBACK_1(LabelMainScene::onDecrease, this)); decrease->setColor(Color3B(0,200,20)); auto increase = MenuItemFont::create(" + ", CC_CALLBACK_1(LabelMainScene::onIncrease, this)); increase->setColor(Color3B(0,200,20)); auto menu = Menu::create(decrease, increase, NULL); menu->alignItemsHorizontally(); menu->setPosition(Vec2(s.width/2, s.height-65)); addChild(menu, 1); auto infoLabel = Label::createWithTTF("0 nodes", "fonts/Marker Felt.ttf", 30); infoLabel->setColor(Color3B(0,200,20)); infoLabel->setPosition(Vec2(s.width/2, s.height-90)); addChild(infoLabel, 1, kTagInfoLayer); // add menu auto menuLayer = new LabelMenuLayer(true, TEST_COUNT, LabelMainScene::_s_labelCurCase); addChild(menuLayer, 1, kTagMenuLayer); menuLayer->release(); /** * auto test menu */ auto menuAutoTest = Menu::create(); menuAutoTest->setPosition( Vec2::ZERO ); MenuItemFont::setFontName("fonts/arial.ttf"); MenuItemFont::setFontSize(24); MenuItemFont* autoTestItem = NULL; if (LabelMainScene::_s_autoTest) { autoTestItem = MenuItemFont::create("Auto Test On",CC_CALLBACK_1(LabelMainScene::onAutoTest, this)); } else { autoTestItem = MenuItemFont::create("Auto Test Off",CC_CALLBACK_1(LabelMainScene::onAutoTest, this)); } autoTestItem->setTag(1); autoTestItem->setPosition(Vec2( s.width - 90, s.height / 2)); autoTestItem->setColor(Color3B::RED); menuAutoTest->addChild(autoTestItem); addChild( menuAutoTest, 3, kTagAutoTestMenu ); _title = Label::createWithTTF(title().c_str(), "fonts/arial.ttf", 32); addChild(_title, 1); _title->setPosition(Vec2(s.width/2, s.height-50)); while(_quantityNodes < nodes) onIncrease(this); }
bool LevelSelectLayer::init() { if (!Layer::init()) return false; // map filenames to level names _levelNameMap["00.tmx"] = "0. Test Level"; _levelNameMap["01.tmx"] = "1. Test Level"; _levelNameMap["02.tmx"] = "2. Test Level"; _levelNameMap["03.tmx"] = "3. Test Level"; Size visibleSize = Director::sharedDirector()->getVisibleSize(); Menu* menu = Menu::create(); // Scan directory DIR *dp; struct dirent *ep; std::vector<std::string> files; std::vector<std::string> dirs; dirs.push_back("../Resources/levels"); dirs.push_back("./Resources/levels"); dirs.push_back("./levels"); for (auto path : dirs) { std::cout << "Searching for levels in " << path << std::endl; dp = opendir(path.c_str()); if (dp != NULL) { while (ep = readdir(dp)) { std::string name(ep->d_name); // Must contain .tmx and must not be dir or hidden file if (name[0] != '.' && name.find(".tmx") != std::string::npos) files.push_back(name); } (void) closedir(dp); std::sort(files.begin(), files.end()); } if (files.size() > 0) { std::cout << "Directory OK!" << std::endl; break; } } if (files.size() == 0) { std::cerr << "Couldn't open the directory containing maps!" << std::endl; } int position = 0; Bomber::Common::XMLStorage *storage = Bomber::Common::XMLStorage::getInstance(); for (auto filename : files) { if (_levelNameMap.count(filename) == 0) { std::cerr << "Not defined name for " << filename << std::endl; //continue; _levelNameMap[filename] = "Not defined name for " + filename; } ccMenuCallback callback = std::bind(&LevelSelectLayer::playersSelect, this, this, filename); MenuItemFont *newLevel = new MenuItemFont(); std::string nameToDisplay(_levelNameMap[filename]); if (storage->get("level_status", filename) != "") { nameToDisplay += " - "; nameToDisplay += storage->get("level_status", filename); } newLevel->initWithString( nameToDisplay.c_str(), callback ); newLevel->setPosition(ccp(0, position)); menu->addChild(newLevel); position -= 50; } this->addChild(menu, 1); menu->setPosition( ccp( visibleSize.width/2, visibleSize.height - 100 ) ); this->setTouchEnabled(true); this->setKeyboardEnabled(true); return true; }
SocketIOTestLayer::SocketIOTestLayer(void) : _sioClient(NULL) , _sioEndpoint(NULL) { //set the clients to NULL until we are ready to connect Size winSize = Director::getInstance()->getWinSize(); const int MARGIN = 40; const int SPACE = 35; LabelTTF *label = LabelTTF::create("SocketIO Extension Test", "Arial", 28); label->setPosition(Point(winSize.width / 2, winSize.height - MARGIN)); addChild(label, 0); Menu *menuRequest = Menu::create(); menuRequest->setPosition(Point::ZERO); addChild(menuRequest); // Test to create basic client in the default namespace LabelTTF *labelSIOClient = LabelTTF::create("Open SocketIO Client", "Arial", 22); MenuItemLabel *itemSIOClient = MenuItemLabel::create(labelSIOClient, CC_CALLBACK_1(SocketIOTestLayer::onMenuSIOClientClicked, this)); itemSIOClient->setPosition(Point(VisibleRect::left().x + labelSIOClient->getContentSize().width / 2 + 5, winSize.height - MARGIN - SPACE)); menuRequest->addChild(itemSIOClient); // Test to create a client at the endpoint '/testpoint' LabelTTF *labelSIOEndpoint = LabelTTF::create("Open SocketIO Endpoint", "Arial", 22); MenuItemLabel *itemSIOEndpoint = MenuItemLabel::create(labelSIOEndpoint, CC_CALLBACK_1(SocketIOTestLayer::onMenuSIOEndpointClicked, this)); itemSIOEndpoint->setPosition(Point(VisibleRect::right().x - labelSIOEndpoint->getContentSize().width / 2 - 5, winSize.height - MARGIN - SPACE)); menuRequest->addChild(itemSIOEndpoint); // Test sending message to default namespace LabelTTF *labelTestMessage = LabelTTF::create("Send Test Message", "Arial", 22); MenuItemLabel *itemTestMessage = MenuItemLabel::create(labelTestMessage, CC_CALLBACK_1(SocketIOTestLayer::onMenuTestMessageClicked, this)); itemTestMessage->setPosition(Point(VisibleRect::left().x + labelTestMessage->getContentSize().width / 2 + 5, winSize.height - MARGIN - 2 * SPACE)); menuRequest->addChild(itemTestMessage); // Test sending message to the endpoint '/testpoint' LabelTTF *labelTestMessageEndpoint = LabelTTF::create("Test Endpoint Message", "Arial", 22); MenuItemLabel *itemTestMessageEndpoint = MenuItemLabel::create(labelTestMessageEndpoint, CC_CALLBACK_1(SocketIOTestLayer::onMenuTestMessageEndpointClicked, this)); itemTestMessageEndpoint->setPosition(Point(VisibleRect::right().x - labelTestMessageEndpoint->getContentSize().width / 2 - 5, winSize.height - MARGIN - 2 * SPACE)); menuRequest->addChild(itemTestMessageEndpoint); // Test sending event 'echotest' to default namespace LabelTTF *labelTestEvent = LabelTTF::create("Send Test Event", "Arial", 22); MenuItemLabel *itemTestEvent = MenuItemLabel::create(labelTestEvent, CC_CALLBACK_1(SocketIOTestLayer::onMenuTestEventClicked, this)); itemTestEvent->setPosition(Point(VisibleRect::left().x + labelTestEvent->getContentSize().width / 2 + 5, winSize.height - MARGIN - 3 * SPACE)); menuRequest->addChild(itemTestEvent); // Test sending event 'echotest' to the endpoint '/testpoint' LabelTTF *labelTestEventEndpoint = LabelTTF::create("Test Endpoint Event", "Arial", 22); MenuItemLabel *itemTestEventEndpoint = MenuItemLabel::create(labelTestEventEndpoint, CC_CALLBACK_1(SocketIOTestLayer::onMenuTestEventEndpointClicked, this)); itemTestEventEndpoint->setPosition(Point(VisibleRect::right().x - labelTestEventEndpoint->getContentSize().width / 2 - 5, winSize.height - MARGIN - 3 * SPACE)); menuRequest->addChild(itemTestEventEndpoint); // Test disconnecting basic client LabelTTF *labelTestClientDisconnect = LabelTTF::create("Disconnect Socket", "Arial", 22); MenuItemLabel *itemClientDisconnect = MenuItemLabel::create(labelTestClientDisconnect, CC_CALLBACK_1(SocketIOTestLayer::onMenuTestClientDisconnectClicked, this)); itemClientDisconnect->setPosition(Point(VisibleRect::left().x + labelTestClientDisconnect->getContentSize().width / 2 + 5, winSize.height - MARGIN - 4 * SPACE)); menuRequest->addChild(itemClientDisconnect); // Test disconnecting the endpoint '/testpoint' LabelTTF *labelTestEndpointDisconnect = LabelTTF::create("Disconnect Endpoint", "Arial", 22); MenuItemLabel *itemTestEndpointDisconnect = MenuItemLabel::create(labelTestEndpointDisconnect, CC_CALLBACK_1(SocketIOTestLayer::onMenuTestEndpointDisconnectClicked, this)); itemTestEndpointDisconnect->setPosition(Point(VisibleRect::right().x - labelTestEndpointDisconnect->getContentSize().width / 2 - 5, winSize.height - MARGIN - 4 * SPACE)); menuRequest->addChild(itemTestEndpointDisconnect); // Sahred Status Label _sioClientStatus = LabelTTF::create("Not connected...", "Arial", 14, Size(320, 100), Label::HAlignment::LEFT); _sioClientStatus->setAnchorPoint(Point(0, 0)); _sioClientStatus->setPosition(Point(VisibleRect::left().x, VisibleRect::rightBottom().y)); this->addChild(_sioClientStatus); // Back Menu MenuItemFont *itemBack = MenuItemFont::create("Back", CC_CALLBACK_1(SocketIOTestLayer::toExtensionsMainLayer, this)); itemBack->setPosition(Point(VisibleRect::rightBottom().x - 50, VisibleRect::rightBottom().y + 25)); Menu *menuBack = Menu::create(itemBack, NULL); menuBack->setPosition(Point::ZERO); addChild(menuBack); }
void SpriteMainScene::initWithSubTest(int asubtest, int nNodes) { //srandom(0); subtestNumber = asubtest; _subTest = new SubTest; _subTest->initWithSubTest(asubtest, this); auto s = Director::getInstance()->getWinSize(); lastRenderedCount = 0; quantityNodes = 0; MenuItemFont::setFontSize(65); auto decrease = MenuItemFont::create(" - ", CC_CALLBACK_1(SpriteMainScene::onDecrease, this)); decrease->setColor(Color3B(0,200,20)); auto increase = MenuItemFont::create(" + ", CC_CALLBACK_1(SpriteMainScene::onIncrease, this)); increase->setColor(Color3B(0,200,20)); auto menu = Menu::create(decrease, increase, NULL); menu->alignItemsHorizontally(); menu->setPosition(Point(s.width/2, s.height-65)); addChild(menu, 1); auto infoLabel = LabelTTF::create("0 nodes", "Marker Felt", 30); infoLabel->setColor(Color3B(0,200,20)); infoLabel->setPosition(Point(s.width/2, s.height-90)); addChild(infoLabel, 1, kTagInfoLayer); // add menu auto menuLayer = new SpriteMenuLayer(true, TEST_COUNT, SpriteMainScene::_s_nSpriteCurCase); addChild(menuLayer, 1, kTagMenuLayer); menuLayer->release(); /** * auto test menu */ auto menuAutoTest = Menu::create(); menuAutoTest->setPosition( Point::ZERO ); MenuItemFont::setFontName("Arial"); MenuItemFont::setFontSize(24); MenuItemFont* autoTestItem = NULL; if (SpriteMainScene::_s_autoTest) { autoTestItem = MenuItemFont::create("Auto Test On",CC_CALLBACK_1(SpriteMainScene::onAutoTest, this)); } else { autoTestItem = MenuItemFont::create("Auto Test Off",CC_CALLBACK_1(SpriteMainScene::onAutoTest, this)); } autoTestItem->setTag(1); autoTestItem->setPosition(Point( s.width - 90, s.height / 2)); menuAutoTest->addChild(autoTestItem); addChild( menuAutoTest, 3, kTagAutoTestMenu ); // Sub Tests MenuItemFont::setFontSize(28); auto subMenu = Menu::create(); for (int i = 1; i <= 13; ++i) { char str[10] = {0}; sprintf(str, "%d ", i); auto itemFont = MenuItemFont::create(str, CC_CALLBACK_1(SpriteMainScene::testNCallback, this)); itemFont->setTag(i); subMenu->addChild(itemFont, 10); if( i<= 4) itemFont->setColor(Color3B(200,20,20)); else if(i <= 8) itemFont->setColor(Color3B(0,200,20)); else if( i<=12) itemFont->setColor(Color3B(0,20,200)); else itemFont->setColor(Color3B::GRAY); } subMenu->alignItemsHorizontally(); subMenu->setPosition(Point(s.width/2, 80)); addChild(subMenu, 2); // add title label auto label = LabelTTF::create(title(), "Arial", 40); addChild(label, 1); label->setPosition(Point(s.width/2, s.height-32)); label->setColor(Color3B(255,255,40)); // subtitle std::string strSubtitle = subtitle(); if( ! strSubtitle.empty() ) { auto l = LabelTTF::create(strSubtitle.c_str(), "Thonburi", 16); addChild(l, 9999); l->setPosition( Point(VisibleRect::center().x, VisibleRect::top().y - 60) ); } while(quantityNodes < nNodes) onIncrease(this); }
bool TestFragmentEffect::init() { if ( !TestBase::init() ) { return false; } //都是菜单设置,可以不看 MenuItemFont* MIF0 = MenuItemFont::create("ES_NONE"); MIF0->setColor(Color3B::RED); MIF0->setTag(0); MenuItemFont* MIF1 = MenuItemFont::create("ES_BLACK_AND_WHITE"); MIF1->setColor(Color3B::RED); MIF1->setTag(0); MenuItemFont* MIF2 = MenuItemFont::create("ES_OLD_PHOTOS"); MIF2->setColor(Color3B::RED); MIF2->setTag(0); MenuItemFont* MIF3 = MenuItemFont::create("ES_INVERT"); MIF3->setColor(Color3B::RED); MIF3->setTag(0); MenuItemFont* MIF4 = MenuItemFont::create("ES_BURNS"); MIF4->setColor(Color3B::RED); MIF4->setTag(0); MenuItemFont* MIF5 = MenuItemFont::create("ES_POISONING"); MIF5->setColor(Color3B::RED); MIF5->setTag(0); MenuItemFont* MIF6 = MenuItemFont::create("ES_COLD"); MIF6->setColor(Color3B::RED); MIF6->setTag(0); MenuItemFont* MIF7 = MenuItemFont::create("ES_USER_DEFINED"); MIF7->setColor(Color3B::RED); MIF7->setTag(0); m_sel = MenuItemToggle::createWithCallback(CC_CALLBACK_1(TestFragmentEffect::toggleCallback,this),MIF0,MIF1,MIF2,MIF3,MIF4,MIF5,MIF6,MIF7,NULL); m_sel->setTag(0); m_sel->setAnchorPoint(Vec2(0.5f,1.0f)); m_sel->setPosition(Vec2(m_visibleOrigin.x + m_visibleSize.width / 2, m_visibleOrigin.y + m_visibleSize.height - 7)); MenuItemImage* last = MenuItemImage::create("FragmentEffect/lastNor.png","FragmentEffect/lastCli.png","",CC_CALLBACK_1(TestFragmentEffect::toggleCallback,this)); last->setTag(-1); last->setAnchorPoint(Vec2(0.5f,1.0f)); last->setPosition(Vec2(m_visibleOrigin.x + m_visibleSize.width / 10 * 1, m_visibleOrigin.y + m_visibleSize.height)); MenuItemImage* next = MenuItemImage::create("FragmentEffect/nextNor.png","FragmentEffect/nextCli.png","",CC_CALLBACK_1(TestFragmentEffect::toggleCallback,this)); next->setTag(1); next->setAnchorPoint(Vec2(0.5f,1.0f)); next->setPosition(Vec2(m_visibleOrigin.x + m_visibleSize.width / 10 * 9, m_visibleOrigin.y + m_visibleSize.height)); MenuItemFont* UDF = MenuItemFont::create("goto ES_USER_DEFINED",CC_CALLBACK_1(TestFragmentEffect::gotoUserDefine,this)); UDF->setColor(Color3B::RED); UDF->setTag(0); UDF->setPosition(Vec2(m_visibleOrigin.x + m_visibleSize.width / 2, m_visibleOrigin.y + m_visibleSize.height - 50.0f)); Menu* pMenu = Menu::create(m_sel,last,next,UDF,NULL); pMenu->setPosition(Vec2::ZERO); this->addChild(pMenu, 1); m_bgSprite = Sprite::create("FragmentEffect/HelloWorld.png"); m_bgSprite->setPosition(Vec2(m_visibleOrigin.x + m_visibleSize.width / 2, m_visibleOrigin.y + m_visibleSize.height / 2)); this->addChild(m_bgSprite, 0); //加载骨骼动画 ArmatureDataManager::getInstance()->addArmatureFileInfo("FragmentEffect/Hero0.png","FragmentEffect/Hero0.plist","FragmentEffect/Hero.ExportJson"); m_armature = Armature::create("Hero"); m_armature->getAnimation()->playWithIndex(0); m_armature->setPosition(Vec2(m_visibleOrigin.x+m_visibleSize.width/2, 0.0f)); m_armature->setAnchorPoint(Vec2(0.5f,0.0f)); this->addChild(m_armature,1); //淡出淡入这样的动作依然可以使用 m_armature->runAction(Sequence::create(FadeOut::create(0.5f),FadeIn::create(0.5f),0)); //就这几句是设置效果的,toggleCallback 和 gotoUserDefine方法里面也有 m_indexSprite = FragmentEffect::getInstance()->addEffectNode(m_bgSprite); //m_indexSprite接收返回的序号,setEffect 和 getEffectSelect 的时候使用 m_indexArmature = FragmentEffect::getInstance()->addEffectNode(m_armature); //m_indexArmature接收返回的序号,setEffect 和 getEffectSelect 的时候使用 float f[] = { 0.5f,0.0f,0.0f,0.0f, 0.0f,0.5f,0.0f,0.0f, 0.0f,0.0f,0.5f,0.0f, 0.0f,0.0f,0.0f,0.5f }; FragmentEffect::getInstance()->addEffectMatrix(Mat4(f));//增加自定义特效矩阵,序号从 ES_USER_DEFINED 开始增加 return true; }
//一些菜单的设置不看也可以,与地图相关的操作在okCallback里面 void HelloWorld::createInitMenu() { Size visibleSize = Director::getInstance()->getVisibleSize(); m_setLayer = Layer::create(); this->addChild(m_setLayer); //方向设置 Vector<MenuItem*> dirItemFronts; dirItemFronts.pushBack(MenuItemFont::create("Right to Left")); dirItemFronts.pushBack(MenuItemFont::create("Left to Right")); dirItemFronts.pushBack(MenuItemFont::create("Top to Bottom")); dirItemFronts.pushBack(MenuItemFont::create("Bottom to Top")); m_dirSelItem = MenuItemToggle::createWithCallback( CC_CALLBACK_1(HelloWorld::toggleCallback,this), dirItemFronts); m_dirSelItem->setAnchorPoint(Vec2(0.5f,0.5f)); m_dirSelItem->setPosition(Vec2(visibleSize.width/2 , visibleSize.height/4*3)); MenuItemImage *nextDir = MenuItemImage::create( "nextNor.png", "nextCli.png", CC_CALLBACK_1(HelloWorld::dirChangeCallback,this)); nextDir->setTag(1); nextDir->setAnchorPoint(Vec2(0.5f,0.5f)); nextDir->setPosition(Vec2(visibleSize.width/6*5, visibleSize.height/4*3)); MenuItemImage *lastDir = MenuItemImage::create( "lastNor.png", "lastCli.png", CC_CALLBACK_1(HelloWorld::dirChangeCallback,this)); lastDir->setTag(-1); lastDir->setAnchorPoint(Vec2(0.5f,0.5f)); lastDir->setPosition(Vec2(visibleSize.width/6, visibleSize.height/4*3)); //模式设置 Vector<MenuItem*> modeItemFronts; modeItemFronts.pushBack(MenuItemFont::create("Loop Mode")); modeItemFronts.pushBack(MenuItemFont::create("Drop Mode")); m_modeSelItem = MenuItemToggle::createWithCallback( CC_CALLBACK_1(HelloWorld::toggleCallback,this), modeItemFronts); m_modeSelItem->setAnchorPoint(Vec2(0.5f,0.5f)); m_modeSelItem->setPosition(Vec2(visibleSize.width/2 , visibleSize.height/3)); m_modeSelItem->setAnchorPoint(Vec2(0.5f,0.5f)); m_modeSelItem->setPosition(Vec2(visibleSize.width/2 , visibleSize.height/2)); MenuItemImage *nextMode = MenuItemImage::create( "nextNor.png", "nextCli.png", CC_CALLBACK_1(HelloWorld::modeChangeCallback,this)); nextMode->setTag(1); nextMode->setAnchorPoint(Vec2(0.5f,0.5f)); nextMode->setPosition(Vec2(visibleSize.width/6*5, visibleSize.height/2)); MenuItemImage *lastMode = MenuItemImage::create( "lastNor.png", "lastCli.png", CC_CALLBACK_1(HelloWorld::modeChangeCallback,this)); lastMode->setTag(-1); lastMode->setAnchorPoint(Vec2(0.5f,0.5f)); lastMode->setPosition(Vec2(visibleSize.width/6, visibleSize.height/2)); MenuItemFont* pOK = MenuItemFont::create("OK",CC_CALLBACK_1(HelloWorld::okCallback,this)); pOK->setPosition(Vec2(visibleSize.width/3,visibleSize.height/4)); MenuItemFont* pQuit = MenuItemFont::create("Quit",CC_CALLBACK_1(HelloWorld::quitCallback,this)); pQuit->setPosition(Vec2(visibleSize.width/3*2,visibleSize.height/4)); Menu* pMenu = Menu::create(lastDir,m_dirSelItem,nextDir,lastMode,m_modeSelItem,nextMode,pOK,pQuit,NULL); pMenu->setPosition(Vec2::ZERO); m_setLayer->addChild(pMenu); m_bg = 0; }
void HelloWorld::okCallback(Ref* pSender) { if(!m_bg) { m_runLayer = Layer::create(); this->addChild(m_runLayer); int dirSel = m_dirSelItem->getSelectedIndex(); switch (dirSel) { case 0: m_bg = ScrollingBackground::create(ScrollDirection::SD_RIGHT_TO_LEFT); m_direction = ScrollDirection::SD_RIGHT_TO_LEFT; break; case 1: m_bg = ScrollingBackground::create(ScrollDirection::SD_LEFT_TO_RIGHT); m_direction = ScrollDirection::SD_LEFT_TO_RIGHT; break; case 2: m_bg = ScrollingBackground::create(ScrollDirection::SD_TOP_TO_BOTTOM); m_direction = ScrollDirection::SD_TOP_TO_BOTTOM; break; case 3: m_bg = ScrollingBackground::create(ScrollDirection::SD_BOTTOM_TO_TOP); m_direction = ScrollDirection::SD_BOTTOM_TO_TOP; break; default: break; } m_runLayer->addChild(m_bg,1); for (int i = 1; i < 5; i++) { addBgSprite(i); } /* //当有一个背景精灵彻底离开屏幕的时候的消息,两种方式 if(m_modeSelItem->getSelectedIndex()==0) m_bg->setBgChangeEventListener(this,bgSpriteChangeEvent(HelloWorld::loopBgChangeCallback)); //循环模式 else m_bg->setBgChangeEventListener(this,bgSpriteChangeEvent(HelloWorld::dropBgChangeCallback)); //丢弃模式 */ //当有一个背景精灵彻底离开屏幕的时候的消息,两种方式 if(m_modeSelItem->getSelectedIndex()==0) m_bg->setBgChangeEventListener(CC_CALLBACK_3(HelloWorld::loopBgChangeCallback,this)); //循环模式 else m_bg->setBgChangeEventListener(CC_CALLBACK_3(HelloWorld::dropBgChangeCallback,this)); //丢弃模式 /* //当背景精灵移动时候的消息,两种方式 m_bg->setBgMoveEventListener(this,bgSpriteMoveEvent(HelloWorld::bgMoveCallback)); */ //当背景精灵移动时候的消息,两种方式 m_bg->setBgMoveEventListener(CC_CALLBACK_2(HelloWorld::bgMoveCallback,this)); m_velocity = 300.0f; m_bgSprite = m_bg->getCurBgSprite(); m_bg->beginContinuousScroll(m_velocity); //一个跟随背景移动的物体 m_pItem = Sprite::create("item.png"); m_pItem->setAnchorPoint(Vec2(0.5f,0.5f)); m_pItem->setPosition(Vec2(0.0f,0.0f)); m_runLayer->addChild(m_pItem,2); //pItem锚点一直都是(0.5,0.5),坐标一直是(0.0,0.0),注意看当画面切换的时候他会出现在哪里 //背景精灵精灵的锚点不同,会影响pItem的位置 m_pItem->setPosition(m_bg->getCurBgSprite()->getPosition()); /*下面的是一些菜单的设置,不看也可以*/ Size visibleSize = Director::getInstance()->getVisibleSize(); //返回按钮 MenuItemFont* back = MenuItemFont::create("back",CC_CALLBACK_1(HelloWorld::backCallback,this)); back->setAnchorPoint(Vec2(1.0f,1.0f)); back->setPosition(Vec2(visibleSize.width/2.0f,visibleSize.height/2.0f)); //设置相反速度的按钮 MenuItemFont* reverse = MenuItemFont::create("reverse",CC_CALLBACK_1(HelloWorld::reverseCallback,this)); //暂停 MenuItemToggle* pause = MenuItemToggle::createWithCallback(CC_CALLBACK_1(HelloWorld::pauseCallback,this), MenuItemFont::create("pause"), MenuItemFont::create("resume"), NULL); pause->setPosition(Vec2(0.0f,50.0f)); //上一个画面 MenuItemImage* lastBg = MenuItemImage::create("lastBgNor.png","lastBgCli.png","",CC_CALLBACK_1(HelloWorld::nextBgCallback,this)); lastBg->setTag(0); lastBg->setAnchorPoint(Vec2(0.0f,0.5f)); lastBg->setPosition(Vec2(-visibleSize.width/2.0f,0.0f)); //下一个画面 MenuItemImage* nextBg = MenuItemImage::create("NextBgNor.png","NextBgCli.png","",CC_CALLBACK_1(HelloWorld::nextBgCallback,this)); nextBg->setTag(1); nextBg->setAnchorPoint(Vec2(1.0f,0.5f)); nextBg->setPosition(Vec2(visibleSize.width/2.0f,0.0f)); //增加背景精灵 MenuItemFont* add = MenuItemFont::create("add background",CC_CALLBACK_1(HelloWorld::addBgSpriteCallback,this)); add->setPosition(Vec2(0.0f,-50.0f)); Menu* pMenu = Menu::create(pause,reverse,add,lastBg,nextBg,back,NULL); pMenu->setPosition(Vec2(visibleSize.width/2.0f,visibleSize.height/2.0f)); m_runLayer->addChild(pMenu,3); //文字提示: Color3B color(255,0,0); m_itemTipsLabel = Label::createWithTTF("","fonts/arial.ttf",17.0f); m_itemTipsLabel->setColor(color); m_itemTipsLabel->setAnchorPoint(Vec2(0.5f,0.5f)); m_itemTipsLabel->setPosition(Vec2(visibleSize.width/2.0f,visibleSize.height/6.0f)); m_runLayer->addChild(m_itemTipsLabel,3); m_numBgLabel = Label::createWithTTF("","fonts/arial.ttf",17.0f); m_numBgLabel->setColor(color); m_numBgLabel->setAnchorPoint(Vec2(0.5f,0.5f)); m_numBgLabel->setPosition(Vec2(visibleSize.width/2.0f,visibleSize.height/10.0f)); m_runLayer->addChild(m_numBgLabel,3); m_addTipsLabel = Label::createWithTTF("","fonts/arial.ttf",17.0f); m_addTipsLabel->setColor(color); m_addTipsLabel->setAnchorPoint(Vec2(0.5f,0.5f)); m_addTipsLabel->setPosition(Vec2(visibleSize.width/2.0f,visibleSize.height/10.0f*9.0f)); m_addTipsLabel->setString(""); m_runLayer->addChild(m_addTipsLabel,3); setTextTips(m_bg->getCurBgSprite()); this->removeChild(m_setLayer); m_setLayer = 0; } }
void DialogLayer::showDialogLayer(Layer *layer, String title, String leftString, SEL_MenuHandler leftHandler, String rightString, SEL_MenuHandler rightHandler, DialogLayer::STATUS status) { if (dialogLayer != NULL) { dialogLayer->removeFromParentAndCleanup(true); //dialogLayer = NULL; } dialogLayer = DialogLayer::create(); Size winSize = Director::getInstance()->getWinSize(); LabelTTF *label = LabelTTF::create(title.getCString(), "", 48); label->setPosition(ccp(winSize.width / 2, winSize.height / 2 + 50)); dialogLayer->addChild(label); MenuItemFont *leftMenuItem; MenuItemFont *rightMenuItem; Menu * m_pMenu = dialogLayer->getMenu(); if (leftHandler != NULL) { leftMenuItem = MenuItemFont::create(leftString.getCString(), dialogLayer, leftHandler); leftMenuItem->setPosition(Point(winSize.width / 2 - 100, winSize.height / 2 - 50)); m_pMenu->addChild(leftMenuItem); } if (rightHandler != NULL) { rightMenuItem = MenuItemFont::create(rightString.getCString(), dialogLayer, rightHandler); rightMenuItem->setPosition(Point(winSize.width / 2 + 100, winSize.height / 2 - 50)); m_pMenu->addChild(rightMenuItem); } m_pMenu->setPosition(Point::ZERO); dialogLayer->addChild(m_pMenu); Sprite *sprite_win; switch (status) { case DialogLayer::STATUS::WIN: sprite_win = Sprite::create("layers/win.png"); sprite_win->setPosition(Point(winSize.width / 2, winSize.height / 2 + 200)); dialogLayer->addChild(sprite_win, 2); break; case DialogLayer::STATUS::FAIL: sprite_win = Sprite::create("layers/fail.png"); sprite_win->setPosition(Point(winSize.width / 2, winSize.height / 2 + 200)); dialogLayer->addChild(sprite_win, 2); break; case DialogLayer::STATUS::NONE: break; default: break; } EventListenerTouchOneByOne * listener = EventListenerTouchOneByOne::create(); listener->onTouchBegan = [](Touch *, Event *) { return true; }; listener->setSwallowTouches(true); Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, dialogLayer); layer->addChild(dialogLayer, 10); //layer->getKeyboardListener(); Director::getInstance()->getEventDispatcher()->pauseEventListenersForTarget(layer); }