MenuItemSprite * MenuItemSprite::create(Node *normalSprite, Node *selectedSprite, Node *disabledSprite, const ccMenuCallback& callback) { MenuItemSprite *ret = new (std::nothrow) MenuItemSprite(); ret->initWithNormalSprite(normalSprite, selectedSprite, disabledSprite, callback); ret->autorelease(); return ret; }
bool BowManHightScore::init() { if(!Layer::init()){ return false; } Size visibleSize = Director::getInstance()->getVisibleSize(); Sprite* backSprite1 = Sprite::create("img/button/back_btn.png"); Sprite* backSprite2 = Sprite::create("img/button/back_btn1.png"); MenuItemSprite* backBtn = MenuItemSprite::create( backSprite1 , backSprite2 , CC_CALLBACK_1(BowManHightScore::backCallback , this) ); backBtn->setAnchorPoint(Vec2::ANCHOR_MIDDLE); backBtn->setPosition(Vec2( 10 + backBtn->getContentSize().width/2 , visibleSize.height - 10 - backBtn->getContentSize().height/2 )); Menu* menu = Menu::create( backBtn, NULL ); this->addChild(menu); return true; }
// XXX deprecated MenuItemSprite * MenuItemSprite::create(Node *normalSprite, Node *selectedSprite, Node *disabledSprite, Object *target, SEL_MenuHandler selector) { MenuItemSprite *pRet = new MenuItemSprite(); pRet->initWithNormalSprite(normalSprite, selectedSprite, disabledSprite, target, selector); pRet->autorelease(); return pRet; }
void UI::ShowGameOver( cocos2d::Layer *layer ) { Size screenSize = Director::getInstance( )->getVisibleSize( ); Sprite *background = Sprite::create( GAME_OVER_BACKGROUND ); background->setPosition( SonarCocosHelper::UI::GetScreenCenter( ) ); background->setOpacity( 0 ); layer->addChild( background ); background->runAction( Sequence::create( DelayTime::create( PIECE_FADE_IN_TIME * 2.5 ), FadeIn::create( GAME_OVER_BACKGROUND_FADE_IN_TIME ), NULL ) ); MenuItemImage *overlayWindowItem = MenuItemImage::create( GAME_OVER_WINDOW, GAME_OVER_WINDOW, GAME_OVER_WINDOW, NULL ); MenuItemSprite *retryItem = MenuItemSprite::create( Sprite::create( RETRY_BUTTON ), Sprite::create( RETRY_BUTTON_PRESSED ), Sprite::create( RETRY_BUTTON ), CC_CALLBACK_1( UI::Retry, this ) ); retryItem->setPosition( Vec2( overlayWindowItem->getContentSize( ).width / 4, retryItem->getPositionY( ) ) ); MenuItemSprite *mainMenuItem = MenuItemSprite::create( Sprite::create( HOME_BUTTON ), Sprite::create( HOME_BUTTON_PRESSED ), Sprite::create( HOME_BUTTON_PRESSED ), CC_CALLBACK_1( UI::GoToMainMenu, this ) ); mainMenuItem->setPosition( Vec2( -overlayWindowItem->getContentSize( ).width / 4, mainMenuItem->getPositionY( ) ) ); Menu *menu = Menu::create( overlayWindowItem, retryItem, mainMenuItem, NULL ); menu->setPosition( Vec2( SonarCocosHelper::UI::GetScreenCenter( ).x, SonarCocosHelper::UI::GetScreenCenter( ).y + screenSize.height ) ); layer->addChild( menu ); EaseBounceOut *menuActionEasing = EaseBounceOut::create( MoveTo::create( MENU_MOVE_BOUNCE_DURATION, SonarCocosHelper::UI::GetScreenCenter( ) ) ); Sequence *menuShowSeq = Sequence::create( DelayTime::create( PIECE_FADE_IN_TIME * 2.5 ), menuActionEasing, NULL ); menu->runAction( menuShowSeq ); }
void HelloWorld::showResult() { Size visibleSize = Director::getInstance()->getVisibleSize(); //add black cover blackLayer = LayerColor::create(Color4B(0, 0, 0, 120)); blackLayer->setContentSize(visibleSize); blackLayer->setPosition(0,0); addChild(blackLayer); cool = Label::createWithSystemFont("COOL!", "Hobo std", 90); cool->setPosition(visibleSize.width/2, visibleSize.height*2/3); this->addChild(cool); moon->setSpriteFrame("MoonCry.png"); //Play again button Sprite* PlayAgainButton = Sprite::createWithSpriteFrameName("ReplayButton.png"); MenuItemSprite* PlayButtonItem = MenuItemSprite::create(PlayAgainButton, PlayAgainButton, CC_CALLBACK_1(HelloWorld::playAgainCallBack, this)); PlayButtonItem->setPosition(Director::getInstance()->convertToGL(Vec2(visibleSize.width/2-100, visibleSize.height*3/4))); //add all items into setMenu playAgainMenu = Menu::create(PlayButtonItem, NULL); playAgainMenu->setPosition(Vec2::ZERO); this->addChild(playAgainMenu); }
// XXX deprecated MenuItemSprite * MenuItemSprite::create(Node *normalSprite, Node *selectedSprite, Node *disabledSprite, Ref *target, SEL_MenuHandler selector) { MenuItemSprite *ret = new (std::nothrow) MenuItemSprite(); ret->initWithNormalSprite(normalSprite, selectedSprite, disabledSprite, target, selector); ret->autorelease(); return ret; }
bool ResultLayer::init() { if (!Layer::init()) { return false; } //des LabelTTF* labelDes = LabelTTF::create(PlayRound::shared()->getPrivityDescription(PlayRound::shared()->getLevel()), "黑体", FONTSIZE(25)); //LabelTTF* labelDes = LabelTTF::create(PlayRound::shared()->getPrivityDescription(0), "黑体", 30); labelDes->setPosition(Point(COMWinSize().width/2,COMWinSize().height*0.9)); addChild(labelDes); __String* strLevel = __String::createWithFormat("我到了第%d层啦!",PlayRound::shared()->getLevel()); LabelTTF* labelLevel = LabelTTF::create(strLevel->getCString(), "黑体", FONTSIZE(40)); labelLevel->setPosition(Point(COMWinSize().width/2,COMWinSize().height*0.8)); addChild(labelLevel); Sprite* spNormal = Sprite::create("image/btn_restart.png"); Sprite* spSelect = Sprite::create("image/btn_restart.png"); // spNormal->setScale(960/COMWinSize().height); // spSelect->setScale(960/COMWinSize().height); spSelect->setColor(Color3B(200,200,200)); MenuItemSprite* itemSp = MenuItemSprite::create(spNormal, spSelect, CC_CALLBACK_1(ResultLayer::onClick, this)); //MenuItemLabel* label = MenuItemLabel::create(LabelTTF::create("重新开始", "黑体", 50),CC_CALLBACK_1(ResultLayer::onClick, this) ); itemSp->setTag(kResultRestartTag); Menu* menu = Menu::create(itemSp, nullptr); menu->setPosition(Point(COMWinSize().width/2,COMWinSize().height/2)); this->addChild(menu); if (CCRANDOM_0_1()>0.8) { ShowYouAd::shared()->showYouWallSpot(); } //Results.m4a CocosDenshion::SimpleAudioEngine::getInstance()->playEffect("Sound/Results.m4a"); //历史分数 __String* strHistory; int iHistory = UserDefault::getInstance()->getIntegerForKey("HistoryScore"); if (iHistory<PlayRound::shared()->getLevel()) { iHistory = PlayRound::shared()->getLevel(); UserDefault::getInstance()->setIntegerForKey("HistoryScore", PlayRound::shared()->getLevel()); UserDefault::getInstance()->flush(); strHistory = __String::createWithFormat("打破记录啦:%d层!!!",iHistory); } else { strHistory = __String::createWithFormat("历史最高:%d层",iHistory); } LabelTTF* ttfHistory = LabelTTF::create(strHistory->getCString(), "黑体", FONTSIZE(50)); ttfHistory->setPosition(Point(COMWinSize().width/2,COMWinSize().height*0.7)); addChild(ttfHistory); return true; }
void TeachingLayer::menuSelect(Ref* pSender) { MenuItemSprite* pItem = dynamic_cast<MenuItemSprite*>(pSender); curPage = pItem->getTag(); for (int i = 0;i<4;i++) { dynamic_cast<MenuItemSprite*>(pItem->getParent()->getChildByTag(i))->unselected(); } pItem->selected(); pageView->scrollToPage(curPage); }
bool BowManInforGame::init() { if(!Layer::init()) { return false; } ///////////////////////////////////////////////////////////////// // BACKGROUNG INFO ///////////////////////////////////////////////////////////////// Sprite* background = Sprite::create("img/background/bg_info.png"); background->setAnchorPoint(Vec2::ANCHOR_MIDDLE); background->setPosition(Vec2(WINSIZE.width/2 , WINSIZE.height/2)); this->addChild(background); ///////////////////////////////////////////////////////////////// // DIALOG INFO ///////////////////////////////////////////////////////////////// Sprite* infoDialog = Sprite::create("img/dialog/info_dialog.png"); infoDialog->setAnchorPoint(Vec2::ANCHOR_MIDDLE); infoDialog->setPosition(Vec2(WINSIZE.width/2 , WINSIZE.height/2)); this->addChild(infoDialog); ///////////////////////////////////////////////////////////////// // BACK BUTTON ///////////////////////////////////////////////////////////////// Sprite* backSprite1 = Sprite::create("img/button/back_btn.png"); Sprite* backSprite2 = Sprite::create("img/button/back_btn1.png"); MenuItemSprite* backBtn = MenuItemSprite::create( backSprite1, backSprite2, CC_CALLBACK_1(BowManInforGame::backCallback, this) ); backBtn->setAnchorPoint(Vec2::ANCHOR_MIDDLE); backBtn->setPosition(Vec2( 10 + backBtn->getContentSize().width / 2, WINSIZE.height - 10 - backBtn->getContentSize().height / 2 )); Menu* menu = Menu::create(backBtn,NULL); this->addChild(menu); return true; }
MenuItemSprite* CardLevelUpLayer::createMenuItem(std::string spritename, std::string textname) { auto normal = Sprite::createWithSpriteFrameName(spritename + "0.png"); auto select = Sprite::createWithSpriteFrameName(spritename + "1.png"); auto disable = Sprite::createWithSpriteFrameName(spritename + "2.png"); auto text = Sprite::createWithSpriteFrameName(textname); text->setPosition(normal->getContentSize().width / 2, normal->getContentSize().height / 2); MenuItemSprite* menuItem = MenuItemSprite::create(normal, select, disable); menuItem->addChild(text); return menuItem; }
// on "init" you need to initialize your instance bool MusicLayer_2::init() { ////////////////////////////// // 1. super init first if ( !Layer::init() ) { return false; } log("MusicLayer_2 init"); Size visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); Sprite *bg = Sprite::create("background.png"); // position the label on the center of the screen bg->setPosition(Vec2(origin.x + visibleSize.width/2, origin.y + visibleSize.height /2)); this->addChild(bg); //开始精灵 Sprite *startSpriteNormal = Sprite::create("start-up.png"); Sprite *startSpriteSelected = Sprite::create("start-down.png"); MenuItemSprite *startMenuItem = MenuItemSprite::create(startSpriteNormal, startSpriteSelected, CC_CALLBACK_1(MusicLayer_2::menuItemStartCallback, this)); startMenuItem->setPosition(Director::getInstance()->convertToGL(Vec2(700, 170))); // 设置图片菜单 MenuItemImage *settingMenuItem = MenuItemImage::create( "setting-up.png", "setting-down.png", CC_CALLBACK_1(MusicLayer_2::menuItemSettingCallback, this)); settingMenuItem->setPosition(Director::getInstance()->convertToGL(Vec2(480, 400))); // 帮助图片菜单 MenuItemImage *helpMenuItem = MenuItemImage::create( "help-up.png", "help-down.png", CC_CALLBACK_1(MusicLayer_2::menuItemHelpCallback, this)); helpMenuItem->setPosition(Director::getInstance()->convertToGL(Vec2(860, 480))); Menu* mu = Menu::create(startMenuItem, settingMenuItem, helpMenuItem, NULL); mu->setPosition(Vec2::ZERO); this->addChild(mu); return true; }
void ConfirmLayer::createLayersContent() { GameModel* gameModel = GameModel::getInstance(); Face* backgroundFade = new Face(); backgroundFade->initWithFile(ANI_BACKGROUND_FADE); backgroundFade->setPosition(Point(gameModel->getDisplayResolutionSize().width / 2, gameModel->getDisplayResolutionSize().height / 2)); backgroundFade->setOpacity(0); this->mainLayer->addChild(backgroundFade); this->backgroundFade = backgroundFade; { FiniteTimeAction* fadeIn = FadeIn::create(0.5f); backgroundFade->registerState(STATE_FADE_IN, fadeIn); FiniteTimeAction* fadeOut = FadeOut::create(0.5f); backgroundFade->registerState(STATE_FADE_OUT, fadeOut); } Face* menuFace = new Face(); menuFace->initWithSpriteFrameName(ANI_BOX_CONFIRM); menuFace->setPosition(Point(gameModel->getDisplayResolutionSize().width / 2, -500)); this->mainLayer->addChild(menuFace); this->menuFace = menuFace; Size menuFaceSize = menuFace->getContentSize(); UGMenu* optionMenu = UGMenu::create(); optionMenu->setPosition(Point::ZERO); menuFace->addChild(optionMenu); { Label* confirmLabel = Label::createWithBMFont(FONT_GAME_SMALL, TXT_CONFIRM_TEXT); confirmLabel->setPosition(menuFaceSize.width / 2, menuFaceSize.height / 2); this->menuFace->addChild(confirmLabel); } { FiniteTimeAction* move1 = MoveTo::create(0, menuFace->getPosition()); FiniteTimeAction* move2 = MoveTo::create(0.5f, Point(gameModel->getDisplayResolutionSize().width / 2, gameModel->getDisplayResolutionSize().height / 2)); FiniteTimeAction* move3 = CallFunc::create(CC_CALLBACK_0(ConfirmLayer::onOptionBoardMoveUpDone, this)); FiniteTimeAction* move123 = Sequence::create(move1, move2, move3, NULL); menuFace->registerState(STATE_MOVE_UP, move123); FiniteTimeAction* move4 = MoveTo::create(0, Point(gameModel->getDisplayResolutionSize().width / 2, gameModel->getDisplayResolutionSize().height / 2)); FiniteTimeAction* move5 = MoveTo::create(0.5f, menuFace->getPosition()); FiniteTimeAction* move6 = CallFunc::create(CC_CALLBACK_0(ConfirmLayer::onOptionBoardMoveDownDone, this)); FiniteTimeAction* move456 = Sequence::create(move4, move5, move6, NULL); menuFace->registerState(STATE_MOVE_DOWN, move456); MenuItemSprite* okButton = Utils::createButton((char*) TXT_OK, 16, ANI_BUTTON_SMALL, ANI_BUTTON_SMALL); okButton->setCallback(CC_CALLBACK_1(ConfirmLayer::onOkButtonClick, this)); okButton->setPosition(Point(menuFaceSize.width / 2 - 129, 0)); okButton->setEnabled(false); optionMenu->addChild(okButton); this->okButton = okButton; MenuItemSprite* cancelButton = Utils::createButton((char*) TXT_CANCEL, 16, ANI_BUTTON_SMALL, ANI_BUTTON_SMALL); cancelButton->setCallback(CC_CALLBACK_1(ConfirmLayer::onCancelButtonClick, this)); cancelButton->setPosition(Point(menuFaceSize.width / 2 + 129, 0)); cancelButton->setEnabled(false); optionMenu->addChild(cancelButton); this->cancelButton = cancelButton; } }
void LayerGameMain::updateBigBoomCount(int bigBoomCount) { String strBoomCount; Sprite * norBoom = Sprite::createWithSpriteFrameName("bomb.png"); Sprite * selBoom = Sprite::createWithSpriteFrameName("bomb.png"); if (bigBoomCount < 0) { return; } else if (bigBoomCount == 0) { if (this->getChildByTag(TAG_BIGBOOM)) { this->removeChildByTag(TAG_BIGBOOM,true); } if (this->getChildByTag(TAG_BIGBOOMCOUNT)) { this->removeChildByTag(TAG_BIGBOOMCOUNT,true); } } else if (bigBoomCount == 1) { if ( !(this->getChildByTag(TAG_BIGBOOM)) ) { MenuItemSprite * boomItem = MenuItemSprite::create(norBoom, selBoom, CC_CALLBACK_1(LayerGameMain::boomMenuCallback,this)); boomItem->setPosition(norBoom->getContentSize().width/2,norBoom->getContentSize().height/2); Menu * boomMenu = Menu::create(boomItem,nullptr); boomMenu->setPosition(Point::ZERO); this->addChild(boomMenu,0,TAG_BIGBOOM); } if ( !(this->getChildByTag(TAG_BIGBOOMCOUNT)) ) { strBoomCount.initWithFormat("X %d",bigBoomCount); LabelBMFont * labelBoomCount = LabelBMFont::create(strBoomCount.getCString(),"font/font.fnt"); labelBoomCount->setAnchorPoint(Point::ANCHOR_MIDDLE_LEFT); labelBoomCount->setPosition(Point(norBoom->getContentSize().width,norBoom->getContentSize().height - 30)); this->addChild(labelBoomCount,0,TAG_BIGBOOMCOUNT); } } else if (bigBoomCount > 1 && bigBoomCount < MAX_BIGBOOM_COUNT) { strBoomCount.initWithFormat("X %d",bigBoomCount); LabelBMFont * labelCount = (LabelBMFont *)this->getChildByTag(TAG_BIGBOOMCOUNT); labelCount->setString(strBoomCount.getCString()); } }
// on "init" you need to initialize your instance bool MainMenu::init() { if ( !Layer::init() ) { return false; } Sprite* background = Sprite::create("mainbg.jpg"); background->setPosition(SCREEN_SIZE.width/2, SCREEN_SIZE.height/2); setScale(SCREEN_SIZE.width/background->getContentSize().width, SCREEN_SIZE.height/background->getContentSize().height); addChild(background); Sprite* normalS = Sprite::create("startButton.png"); Sprite* selectedS = Sprite::create("startButton.png"); selectedS->setColor(Color3B::GRAY); MenuItemSprite* start = MenuItemSprite::create(normalS, selectedS, CC_CALLBACK_1(MainMenu::goToStartScene, this)); Point posStart = Point(SCREEN_SIZE.width/2, SCREEN_SIZE.height/4 + 10); start->setPosition(posStart); start->setScale(0.5f); Sprite* normalE = Sprite::create("emergencyButton.png"); normalE->setColor(Color3B::RED); Sprite* selectedE = Sprite::create("emergencyButton.png"); selectedE->setColor(Color3B::GRAY); MenuItemSprite* emergency = MenuItemSprite::create(normalE, selectedE, CC_CALLBACK_1(MainMenu::goToStartScene, this)); Point posEmer = Point(SCREEN_SIZE.width/3 + 10, SCREEN_SIZE.height/4 + 10); emergency->setPosition(posEmer); emergency->setScale(0.5f); Sprite* normalSe = Sprite::create("settingButton.png"); Sprite* selectedSe = Sprite::create("settingButton.png"); selectedSe->setColor(Color3B::GRAY); MenuItemSprite* settings = MenuItemSprite::create(normalSe, selectedSe, CC_CALLBACK_1(MainMenu::goToStartScene, this)); Point posSe = Point(2 * SCREEN_SIZE.width/3 - 10, SCREEN_SIZE.height/4 + 10); settings->setPosition(posSe); settings->setScale(0.5f); Menu* menu = Menu::create(start, emergency, settings, NULL); menu->setPosition(Point::ZERO); addChild(menu, 1); return true; }
//pageview的用法 void TeachingLayer::addLayer(int index) { auto winSize = Director::getInstance()->getWinSize(); pageView = PageView::create(); //一定要设置大小,不然看不见 pageView->setContentSize(winSize); pageView->setBackGroundColor(Color3B::GREEN); pageView->setBackGroundColorType(Layout::BackGroundColorType::SOLID); pageView->removeAllPages(); pageView->setPosition(Vec2::ZERO); if (index == 0) { for (int i=0;i<4;++i) { //pageview一定要配合layout使用 Layout* layout = Layout::create(); layout->setContentSize(winSize); auto layer = TeachingSubLayer::create(index,i); //layer->setPosition(Vec2(winSize.width/2,winSize.height/2)); layout->addChild(layer); //----按钮 MenuItemSprite* pJumpItem; if (i<=2) { auto nextNormal = Sprite::create("teaching_next.png"); auto nextPressed = Sprite::create("teaching_next.png"); nextPressed->setScale(1.4f); pJumpItem = MenuItemSprite::create(nextNormal,nextPressed,CC_CALLBACK_0(TeachingLayer::menuJump,this)); //pJumpItem->setPosition(Vec2(winSize.width/2 - 60,35-winSize.height/2)); pJumpItem->setPosition(Vec2(winSize.width - pJumpItem->getContentSize().width, pJumpItem->getContentSize().height)); } else//最后一步 { auto nextNormal = Sprite::create("teaching_enter.png"); auto nextPressed = Sprite::create("teaching_enter.png"); nextPressed->setScale(1.4f); pJumpItem = MenuItemSprite::create(nextNormal,nextPressed,CC_CALLBACK_0(TeachingLayer::menuJump,this)); pJumpItem->setPosition(Vec2(winSize.width - pJumpItem->getContentSize().width, pJumpItem->getContentSize().height)); } pJumpItem->setAnchorPoint(Vec2::ANCHOR_BOTTOM_RIGHT); auto pMenu = Menu::create(pJumpItem,nullptr); pMenu->setPosition(Vec2::ZERO); layer->addChild(pMenu,3); pageView->insertPage(layout,i); } } curPage = 0; pageView->scrollToPage(curPage); pageView->addEventListener(CC_CALLBACK_2(TeachingLayer::pageViewEvent, this)); this->addChild(pageView); }
UI::UI( cocos2d::Layer *layer, int &gameState ) { this->gameState = &gameState; Size screenSize = Director::getInstance( )->getVisibleSize( ); Vec2 origin = Director::getInstance( )->getVisibleOrigin( ); MenuItemSprite *pauseItem = MenuItemSprite::create( Sprite::create( PAUSE_BUTTON ), Sprite::create( PAUSE_BUTTON_PRESSED ), Sprite::create( PAUSE_BUTTON_PRESSED ), CC_CALLBACK_1( UI::PauseGame, this ) ); pauseItem->setPosition( Vec2( screenSize.width - ( pauseItem->getContentSize( ).width / 2 ) + origin.x, screenSize.height - ( pauseItem->getContentSize( ).height / 2 ) + origin.y ) ); Menu *menuButtons = Menu::create( pauseItem, NULL ); menuButtons->setPosition( Vec2::ZERO ); layer->addChild( menuButtons ); pausebackground = Sprite::create( PAUSE_BACKGROUND ); pausebackground->setPosition( SonarCocosHelper::UI::GetScreenCenter( ) ); pausebackground->setOpacity( 0 ); layer->addChild( pausebackground ); MenuItemImage *overlayPauseWindowItem = MenuItemImage::create( PAUSE_WINDOW, PAUSE_WINDOW, PAUSE_WINDOW, NULL ); MenuItemSprite *resumeItem = MenuItemSprite::create( Sprite::create( RESUME_BUTTON ), Sprite::create( RESUME_BUTTON_PRESSED ), Sprite::create( RESUME_BUTTON ), CC_CALLBACK_1( UI::PauseGame, this ) ); resumeItem->setPosition( Vec2( -overlayPauseWindowItem->getContentSize( ).width / 4, resumeItem->getPositionY( ) ) ); MenuItemSprite *mainMenuItem = MenuItemSprite::create( Sprite::create( HOME_BUTTON ), Sprite::create( HOME_BUTTON_PRESSED ), Sprite::create( HOME_BUTTON_PRESSED ), CC_CALLBACK_1( UI::GoToMainMenu, this ) ); mainMenuItem->setPosition( Vec2( overlayPauseWindowItem->getContentSize( ).width / 4, mainMenuItem->getPositionY( ) ) ); pauseMenu = Menu::create( overlayPauseWindowItem, resumeItem, mainMenuItem, NULL ); pauseMenu->setPosition( Vec2( SonarCocosHelper::UI::GetScreenCenter( ).x, SonarCocosHelper::UI::GetScreenCenter( ).y + screenSize.height ) ); layer->addChild( pauseMenu ); }
MenuItemSprite* CNodeUtil::createButtonFontSmall(const string& text, int fontSize, string normalFrameName, string selectedFrameName) { Sprite* normalSprite = Sprite::createWithSpriteFrameName(normalFrameName); Sprite* selectedSprite = Sprite::createWithSpriteFrameName(selectedFrameName); normalSprite->getTexture()->setAliasTexParameters(); selectedSprite->getTexture()->setAliasTexParameters(); MenuItemSprite* button = MenuItemSprite::create(normalSprite, selectedSprite); Label* normalText = CNodeUtil::createLabelTTF(text, fontSize, FONT_ARCADE); normalText->setPosition(Point(button->getContentSize().width / 2, button->getContentSize().height / 2)); normalText->enableShadow(); normalSprite->addChild(normalText); Label* selectedText = CNodeUtil::createLabelTTF(text, fontSize, FONT_ARCADE); selectedText->setPosition(Point(button->getContentSize().width / 2, button->getContentSize().height / 2)); selectedText->enableShadow(); selectedSprite->addChild(selectedText); return button; }
bool DialogLayer::addButton(const char* title, Sprite* normalImage, Sprite* selectedImage, Sprite* disableImage, const ccMenuCallback& callback, int tag/* =0 */) { Size winSize = Director::getInstance()->getWinSize(); Point pCenter = Point(winSize.width / 2, winSize.height / 2); // 创建图片菜单按钮 MenuItemSprite* menuImage = MenuItemSprite::create(normalImage, selectedImage, disableImage, callback); menuImage->setTag(tag); menuImage->setPosition(pCenter); // 添加文字说明并设置位置 Size imenu = menuImage->getContentSize(); LabelTTF* ttf = CCLabelTTF::create(title, "Arial", 25); ttf->setColor(Color3B(0, 0, 0)); ttf->setPosition(imenu.width / 2, imenu.height / 2); menuImage->addChild(ttf); getMenuButton()->addChild(menuImage); return true; }
bool WellcomeScene::init(){ log("wellcome scene init"); if(!Layer::init()){ return false; } Size vsize = Director::getInstance()->getVisibleSize(); Point origin = Director::getInstance()->getVisibleOrigin(); Sprite* bg = Sprite::createWithSpriteFrame(AtlasLoader::getInstance()->getSpriteFrameByName("bg_day")); bg->setAnchorPoint(Point::ZERO); bg->setPosition(Point::ZERO); addChild(bg); Sprite* title = Sprite::createWithSpriteFrame(AtlasLoader::getInstance()->getSpriteFrameByName("title")); title->setPosition(Point(vsize.width/2, vsize.height - 10 - (((title->getSpriteFrame())->getRect()).size.height))); addChild(title); Sprite* land = Sprite::createWithSpriteFrame(AtlasLoader::getInstance()->getSpriteFrameByName("land")); land->setAnchorPoint(Point::ZERO); land->setPosition(Point::ZERO); addChild(land); Sprite *button = Sprite::createWithSpriteFrame(AtlasLoader::getInstance()->getSpriteFrameByName("button_play")), *buttonTouch = Sprite::createWithSpriteFrame(AtlasLoader::getInstance()->getSpriteFrameByName("button_play")); buttonTouch->setPositionY(-5); MenuItemSprite *item = MenuItemSprite::create(button, buttonTouch); item->setCallback(CC_CALLBACK_0(WellcomeScene::playButtonClickListener, this)); auto menu = Menu::create(item, NULL); menu->setPosition(Point(vsize.width/2, vsize.height/2)); addChild(menu); bird = BirdSprite::create(); bird->setPosition(Point(vsize.width/2, vsize.height/2 - 80)); addChild(bird); bird->idle(); return true; }
bool GameOverLayer::init(){ if(!Layer::init()){ return false; } Size MyWinSize = Director::getInstance()->getVisibleSize(); MenuItemSprite *reStartBtn = MenuItemSprite::create(Sprite::create("res/image/uires_5.png"), Sprite::create("res/image/uires_5.png"), NULL, CC_CALLBACK_0(GameOverLayer::reStart,this) ); MenuItemSprite *homeBtn = MenuItemSprite::create(Sprite::create("res/image/uires_8.png"), Sprite::create("res/image/uires_8.png"), NULL, CC_CALLBACK_0(GameOverLayer::home,this) ); reStartBtn->setPosition(MyWinSize.width/2+reStartBtn->getContentSize().width/2,MyWinSize.height/2 +8); homeBtn->setPosition(MyWinSize.width/2-homeBtn->getContentSize().width/2,MyWinSize.height/2 +8); Menu *menu = Menu::create(reStartBtn,homeBtn,NULL); menu->setPosition(0,0); this->addChild(menu); return true; }
bool ChoseLevel::init(PhysicsWorld* world){ if (!Layer::init()){ return false; } m_world = world; visibleSize = Director::getInstance()->getVisibleSize(); origin = Director::getInstance()->getVisibleOrigin(); if (!database->getBoolForKey("isExit")){ database->setBoolForKey("isExit", true); database->setIntegerForKey("nowLevel",0); database->setIntegerForKey("nowStage",0); level = 0; stage = 0; } else{ level = database->getIntegerForKey("nowLevel"); stage = database->getIntegerForKey("nowStage"); } Sprite* bgImage = Sprite::create("images/bg.png"); bgImage->setPosition(visibleSize.width/2, visibleSize.height/2); this->addChild(bgImage,1); auto homeItem = MenuItemImage::create("images/home.png","images/home.png",CC_CALLBACK_0(ChoseLevel::backHome,this)); auto homeMenu = Menu::createWithItem(homeItem); this->addChild(homeMenu,5); homeMenu->setPosition(visibleSize.width-homeItem->getContentSize().width/2, visibleSize.height-homeItem->getContentSize().height/2); //auto levelOne = MenuItemLabel::create(Label::createWithTTF("Zero","fonts/arial.ttf",40), // CC_CALLBACK_0(ChoseLevel::selectLevel,this,0)); //levelOne->setPosition(-2*levelOne->getContentSize().width,0); //auto levelTwo = MenuItemLabel::create(Label::createWithTTF("One", "fonts/arial.ttf", 40), // CC_CALLBACK_0(ChoseLevel::selectLevel, this, 1)); //levelTwo->setPosition(0,0); //auto levelThree = MenuItemLabel::create(Label::createWithTTF("Two", "fonts/arial.ttf", 40), // CC_CALLBACK_0(ChoseLevel::selectLevel, this, 2)); //levelThree->setPosition(2 * levelThree->getContentSize().width, 0); //auto choseMenu = Menu::create(levelOne,levelTwo,levelThree,NULL); //choseMenu->setPosition(visibleSize.width/2,visibleSize.height/2); //this->addChild(choseMenu,2); auto menuBg = Sprite::create("images/scroll.png"); menuBg->setPosition(visibleSize.width/2, visibleSize.height/2); this->addChild(menuBg,2); Vector<MenuItem*> levels; MenuItemSprite* levelItem; /* for (int i = 0; i < unlock; i++){ auto normalSprite = Sprite::create("images/levelImage.png"); auto selectedSprite = Sprite::create("images/levelImage.png"); selectedSprite->setOpacity(200); levelItem = MenuItemSprite::create(normalSprite, selectedSprite, CC_CALLBACK_0(ChoseLevel::selectLevel,this,i)); levelItem->setPosition(i*levelItem->getContentSize().width*3/2,0); auto levelStr = String::createWithFormat("%d",i+1); auto levelLabel = Label::createWithTTF(levelStr->getCString(),"fonts/arial.ttf",40); levelLabel->setPosition(levelItem->getContentSize().width/2, levelItem->getContentSize().height/2); levelItem->addChild(levelLabel); levels.pushBack(levelItem); }*/ int count = 0; for (int i = 0; i < 3; i++) { for (int j = 0; j < 2; j++){ auto normalSprite = Sprite::create("images/levelImage.png"); auto selectedSprite = Sprite::create("images/levelImage.png"); selectedSprite->setOpacity(200); levelItem = MenuItemSprite::create(normalSprite, selectedSprite); levelItem->setPosition(i*levelItem->getContentSize().width*3/2, -j*levelItem->getContentSize().height*3/2); if (count <= level){ levelItem->setCallback(CC_CALLBACK_0(ChoseLevel::selectLevel, this, count)); auto levelStr = String::createWithFormat("%d", count + 1); auto levelLabel = Label::createWithTTF(levelStr->getCString(), "fonts/arial.ttf", 40); levelLabel->setPosition(levelItem->getContentSize().width / 2, levelItem->getContentSize().height / 2); levelItem->addChild(levelLabel); count++; } else{ auto lock = Sprite::create("images/locked.png"); lock->setPosition(levelItem->getContentSize().width / 2, levelItem->getContentSize().height / 2); levelItem->addChild(lock); } levels.pushBack(levelItem); } } auto levelMenu = Menu::createWithArray(levels); levelMenu->setPosition(visibleSize.width / 2 - levelItem->getContentSize().width * 3 / 2, visibleSize.height / 2 + levelItem->getContentSize().width/10*7); this->addChild(levelMenu,3); return true; }
bool GamePlay::init() { if (!Layer::init()) { return false; } gameState = Ready; visibleSize = Director::getInstance()->getVisibleSize(); getSoundMusic(); //load game AI //init array number and computation int ARRAY_NUMBER[9] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; arrNum = gameAI->randomNumber(ARRAY_NUMBER, SUM_NUM); for (int i = 0; i < SUM_NUM; i++) { arrNUM[i] = arrNum[i]; } char s[SUM_COM] = ""; //TODO change level // arrCOM = gameAI->randomComputation(s, SUM_COM, // GamePlay::instance()->getLevel() >= 2 ? 2 : 3); arrCOM = gameAI->randomComputation(s, SUM_COM, 2); for (int i = 0; i < SUM_COM; i++) { arrCOMPUTATE[i] = arrCOM[i]; } for (int i = 0; i < SUM_COM / 2; i++) { tempResult[i] = INIT_FRAME; } int arr[GamePlay::instance()->getLevel()]; int* arrayLevel = gameAI->randomLessNumber(arr, GamePlay::instance()->getLevel()); //load background auto bg = Sprite::create("background.png"); bg->setAnchorPoint(Vec2(0, 0)); bg->setPosition(Vec2(0, 0)); this->addChild(bg, -1); float rX = visibleSize.width / bg->getContentSize().width; float rY = visibleSize.height / bg->getContentSize().height; bg->setScaleX(rX); bg->setScaleY(rY); //show logo game Sprite *logoGame = Sprite::create("smalllogo.png"); logoGame->setAnchorPoint(Vec2(0.0, 1.0)); logoGame->setPosition(Vec2(PADDING, visibleSize.height - PADDING)); logoGame->setTag(TAG_LOGO); logoGame->setScale(0.6f); this->addChild(logoGame); //load frame ready float baseY = logoGame->getPositionY() - logoGame->getBoundingBox().size.height - PADDING; float baseX = PADDING / 2; for (int i = 0; i < SUM_NUM; i++) { frameReady[i] = Sprite::create("frame.png"); float width = frameReady[i]->getContentSize().width; float height = frameReady[i]->getContentSize().height; frameReady[i]->setTag(TAG_START_READY_POINT + i); frameReady[i]->setPositionX(baseX + 5.0 / 8.0 * i * width + width / 2); if (i % 2 == 0) { frameReady[i]->setPositionY(baseY - height / 2); } else { frameReady[i]->setPositionY(baseY - height); } this->addChild(frameReady[i]); } //create frame play float paddingY = 0; float paddingX = 0; for (int i = 0; i < SUM_NUM; i++) { float baseX = PADDING; framePlay[i] = TouchSprite::create("frame.png"); framePlay[i]->setTag(TAG_FRAME_PLAY + i); paddingX = (visibleSize.width - PADDING * 4 - framePlay[i]->getContentSize().width) / 3.0; framePlay[i]->setPositionX( PADDING + framePlay[i]->getContentSize().width / 2 + paddingX * (i % 3)); float baseY = frameReady[0]->getPositionY(); if (i % 3 == 0) paddingY = paddingX * ((int) i / 3 + 1); framePlay[i]->setPositionY(baseY - paddingY); framePlay[i]->score = 0; framePlay[i]->isFixed = false; for (int j = 0; j < GamePlay::instance()->getLevel(); j++) { if (arrNum[i] == arrayLevel[j]) { framePlay[i]->score = arrNum[i]; //TODO framePlay[i]->isFixed = true; framePlay[i]->setDisplayFrame( SpriteFrame::create( "frame" + std::to_string(arrNum[i]) + ".png", framePlay[i]->getTextureRect())); } } // CCLog("frameplay[%d] = %d", i, framePlay[i]->score); this->addChild(framePlay[i]); } //load number button //TODO std::string name = "number"; MoveTo* actionBy; int k = 0; for (int i = 0; i < SUM_NUM; i++) { numberBtn[i] = TouchSprite::create( name + std::to_string(i + 1) + ".png"); numberBtn[i]->setTag(TAG_NUMBER + i); numberBtn[i]->setPositionY(visibleSize.height + 3 * PADDING); numberBtn[i]->setPositionX(frameReady[i]->getPositionX()); numberBtn[i]->setZOrder(10); numberBtn[i]->isHidden = false; this->addChild(numberBtn[i]); actionBy = MoveTo::create(0.4, frameReady[i]->getPosition()); auto easeAction = EaseBounceInOut::create(actionBy); for (int j = 0; j < GamePlay::instance()->getLevel(); j++) { if ((i + 1) == arrayLevel[j]) { numberBtn[i]->isHidden = true; numberBtn[i]->setVisible(false); } } if (numberBtn[i]->isHidden == false) { auto delay = DelayTime::create(0.2 * (k + 1)); auto sequence = Sequence::create(delay, easeAction, nullptr); numberBtn[i]->runAction(sequence); k++; } } if (frameReady != NULL) { for (int i = 0; i < SUM_NUM; i++) frameReady[i]->setVisible(false); } //create result frame and equal character Sprite* frameEqual[SUM_COM / 2]; Sprite* characterEqual[SUM_COM / 2]; for (int i = 0; i < SUM_COM / 2; i++) { characterEqual[i] = Sprite::create("icon_equal.png"); frameEqual[i] = Sprite::createWithTexture(frameReady[i]->getTexture()); frameEqual[i]->setTag(TAG_FRAME_EQUAL + i); if (i % 2 == 0) { //frame equal frameEqual[i]->setPositionY( framePlay[SUM_NUM - 1]->getPositionY() + paddingX * (2 - (int) i / 2)); frameEqual[i]->setPositionX( framePlay[SUM_NUM - 1]->getPositionX() + paddingX); //character equal characterEqual[i]->setPositionY( framePlay[SUM_NUM - 1]->getPositionY() + paddingX * ((int) i / 2)); characterEqual[i]->setPositionX( framePlay[SUM_NUM - 1]->getPositionX() + paddingX / 2); } else { //frame equal frameEqual[i]->setPositionY( framePlay[SUM_NUM - 1]->getPositionY() - paddingX); frameEqual[i]->setPositionX( framePlay[SUM_NUM - 1]->getPositionX() - paddingX * (2 - (int) i / 2)); //character equal characterEqual[i]->setPositionY( framePlay[SUM_NUM - 1]->getPositionY() - paddingX / 2); characterEqual[i]->setPositionX( framePlay[SUM_NUM - 1]->getPositionX() - paddingX * (2 - (int) i / 2)); } this->addChild(frameEqual[i]); this->addChild(characterEqual[i]); } //position of character computation Sprite* plusSprite = Sprite::create("icon_plus.png"); Sprite* minusSrite = Sprite::create("icon_minus.png"); Sprite* mutiplySprite = Sprite::create("icon_multiply.png"); Sprite* divideSprite = Sprite::create("icon_divide.png"); for (int i = 0; i < SUM_COM; i++) { if (arrCOM[i] == '+') comBtn[i] = Sprite::createWithTexture(plusSprite->getTexture()); else if (arrCOM[i] == '-') comBtn[i] = Sprite::createWithTexture(minusSrite->getTexture()); else if (arrCOM[i] == '*') comBtn[i] = Sprite::createWithTexture(mutiplySprite->getTexture()); else if (arrCOM[i] == '/') comBtn[i] = Sprite::createWithTexture(divideSprite->getTexture()); this->addChild(comBtn[i]); } setPosCharacterBtn(comBtn, framePlay, paddingX); //calculate result result[0] = gameAI->calculate(arrNum[0], arrNum[1], arrNum[2], arrCOM[0], arrCOM[1]); result[1] = gameAI->calculate(arrNum[0], arrNum[3], arrNum[6], arrCOM[2], arrCOM[7]); result[2] = gameAI->calculate(arrNum[3], arrNum[4], arrNum[5], arrCOM[5], arrCOM[6]); result[3] = gameAI->calculate(arrNum[1], arrNum[4], arrNum[7], arrCOM[3], arrCOM[8]); result[4] = gameAI->calculate(arrNum[6], arrNum[7], arrNum[8], arrCOM[10], arrCOM[11]); result[5] = gameAI->calculate(arrNum[2], arrNum[5], arrNum[8], arrCOM[4], arrCOM[9]); gameAI->printArray(result, SUM_COM / 2); //set result to frameEqual for (int i = 0; i < SUM_COM / 2; i++) { resultLabel[i] = LabelTTF::create("00:00", "fonts/hlvgchac.ttf", 48); resultLabel[i]->setColor(Color3B(Color3B::RED)); resultLabel[i]->setString(std::to_string(result[i])); resultLabel[i]->setPosition(frameEqual[i]->getPosition()); this->addChild(resultLabel[i]); } //button pause Sprite* pauseGame = Sprite::create("pauseBtn.png"); Sprite* pauseGame_press = Sprite::create("pauseBtn_press.png"); MenuItemSprite* pauseBtn = MenuItemSprite::create(pauseGame, pauseGame_press, NULL, CC_CALLBACK_0(GamePlay::gamePause, this)); Menu *menuPause = Menu::create(pauseBtn, nullptr); menuPause->setPosition( Vec2( visibleSize.width - PADDING - pauseBtn->getContentSize().width / 2, visibleSize.height - PADDING - pauseBtn->getContentSize().height / 2)); menuPause->setTag(TAG_PAUSE_BTN); this->addChild(menuPause); //time in pause button LabelTTF *currenttime = LabelTTF::create("00:00", "fonts/hlvgchac.ttf", 40); Point timePoint = menuPause->getPosition(); currenttime->setPosition( Vec2(timePoint.x - PADDING * 2, timePoint.y + 7.0 / 4.0 * PADDING)); currenttime->setZOrder(10); currenttime->setColor(Color3B(Color3B::RED)); currenttime->setTag(TAG_LABEL_COUNT_TIME); this->addChild(currenttime); std::string miniModeSprite = getLevelString( GamePlay::instance()->getLevel()); Sprite* miniMode = Sprite::create("mini" + miniModeSprite + ".png"); miniMode->setScale(0.5); miniMode->setPosition( Vec2(currenttime->getPositionX(), currenttime->getPositionY() - currenttime->getContentSize().height - PADDING / 2)); this->addChild(miniMode); //board menu pause boardMenuPause = Sprite::create("board.png"); boardMenuPause->setPosition( Vec2(visibleSize.width / 2, visibleSize.height + boardMenuPause->getContentSize().height / 2 + PADDING)); boardMenuPause->setZOrder(30); this->addChild(boardMenuPause); //button help of menu Sprite* helpbtn = Sprite::create("help1.png"); Sprite* helpbtn_press = Sprite::create("help2.png"); MenuItemSprite* helpBtn = MenuItemSprite::create(helpbtn, helpbtn_press, NULL, CC_CALLBACK_0(GamePlay::gameHelp, this)); Menu *menuHelp = Menu::create(helpBtn, nullptr); menuHelp->setPosition( Vec2(boardMenuPause->getContentSize().width / 2, boardMenuPause->getContentSize().height - helpbtn->getContentSize().height)); boardMenuPause->addChild(menuHelp); //button setting of menu Sprite* setbtn = Sprite::create("settings1.png"); Sprite* setbtn_press = Sprite::create("settings2.png"); MenuItemSprite* setBtn = MenuItemSprite::create(setbtn, setbtn_press, NULL, CC_CALLBACK_0(GamePlay::gameSetting, this)); Menu *menuSetting = Menu::create(setBtn, nullptr); menuSetting->setPosition( Vec2(boardMenuPause->getContentSize().width / 2, menuHelp->getPositionY() - setbtn->getContentSize().height - PADDING)); menuSetting->setTag(TAG_SETTING); boardMenuPause->addChild(menuSetting); //button quit of menu Sprite* quitbtn = Sprite::create("quit1.png"); Sprite* quitbtn_press = Sprite::create("quit2.png"); MenuItemSprite* quitBtn = MenuItemSprite::create(quitbtn, quitbtn_press, NULL, CC_CALLBACK_0(GamePlay::gameQuit, this)); Menu *menuQuit = Menu::create(quitBtn, nullptr); menuQuit->setPosition( Vec2(menuSetting->getPositionX(), menuSetting->getPositionY() - quitbtn->getContentSize().height - PADDING)); menuQuit->setTag(TAG_QUIT); boardMenuPause->addChild(menuQuit); //button replay, resume, share MenuItemImage* resumeBtn = MenuItemImage::create("menu_resume.png", "menu_resume.png", CC_CALLBACK_0(GamePlay::gameResume, this)); auto menuResume = Menu::create(resumeBtn, nullptr); menuResume->setPosition( Vec2(menuSetting->getPositionX(), menuQuit->getPositionY() - resumeBtn->getContentSize().height - PADDING)); boardMenuPause->addChild(menuResume); MenuItemImage* replayBtn = MenuItemImage::create("menu_replay.png", "menu_replay.png", CC_CALLBACK_0(GamePlay::gameReplay, this)); auto menuReplay = Menu::create(replayBtn, nullptr); menuReplay->setPosition( Vec2( menuResume->getPositionX() - resumeBtn->getContentSize().width - PADDING, menuResume->getPositionY())); boardMenuPause->addChild(menuReplay); MenuItemImage* shareBtn = MenuItemImage::create("menu_share.png", "menu_share.png", CC_CALLBACK_0(GamePlay::gameShareCloseMenuPause, this)); auto menuShare = Menu::create(shareBtn, nullptr); menuShare->setPosition( Vec2( menuResume->getPositionX() + resumeBtn->getContentSize().width + PADDING, menuResume->getPositionY())); boardMenuPause->addChild(menuShare); auto event_listener = EventListenerTouchOneByOne::create(); auto dispatcher = Director::getInstance()->getEventDispatcher(); event_listener->setSwallowTouches(true); event_listener->onTouchBegan = CC_CALLBACK_2(GamePlay::onTouchBegan, this); event_listener->onTouchMoved = CC_CALLBACK_2(GamePlay::onTouchMoved, this); event_listener->onTouchEnded = CC_CALLBACK_2(GamePlay::onTouchEnded, this); dispatcher->addEventListenerWithSceneGraphPriority(event_listener, this); this->setKeypadEnabled(true); this->scheduleUpdate(); // this->schedule(schedule_selector(GamePlay::update), 1.0f); gameState = Playing; return true; }
//================================================================================ // シーン初期化 //================================================================================ bool PauseScene::init() { ////////////////////////////// // 1. super init first if ( !Layer::init() ) { return false; } Size visibleSize = Director::getInstance()->getVisibleSize() / 2 + SCREEN_CENTER; Vec2 origin = Director::getInstance()->getVisibleSize() / 2 - SCREEN_CENTER; //終了ボタン生成 auto closeItem = MenuItemImage::create( "CloseNormal.png", "CloseSelected.png", CC_CALLBACK_1(PauseScene::menuCloseCallback, this)); closeItem->setPosition(Vec2(origin.x + visibleSize.width - closeItem->getContentSize().width/2 , origin.y + closeItem->getContentSize().height/2)); // create menu, it's an autorelease object auto menu = Menu::create(closeItem, NULL); menu->setPosition(Vec2::ZERO); this->addChild(menu, 1); // 更新処理の追加 this->scheduleUpdate(); // タッチ機能の有効化 m_pTouchEventOneByOne = EventListenerTouchOneByOne::create(); m_pTouchEventOneByOne->setSwallowTouches(true); m_pTouchEventOneByOne->onTouchBegan = CC_CALLBACK_2(PauseScene::onTouchBegin,this); m_pTouchEventOneByOne->onTouchMoved = CC_CALLBACK_2(PauseScene::onTouchMoved,this); m_pTouchEventOneByOne->onTouchCancelled = CC_CALLBACK_2(PauseScene::onTouchCancelled, this); m_pTouchEventOneByOne->onTouchEnded = CC_CALLBACK_2(PauseScene::onTouchEnded, this); this->getEventDispatcher()->addEventListenerWithFixedPriority(m_pTouchEventOneByOne, 2); // 薄暗いスプライトを作成 m_pMaskSprite = Sprite::create(); m_pMaskSprite->setTextureRect(Rect(0,0,visibleSize.width,visibleSize.height)); m_pMaskSprite->setColor(Color3B::BLACK); m_pMaskSprite->setOpacity(125); m_pMaskSprite->setPosition(Vec2(visibleSize.width / 2,visibleSize.height / 2)); this->addChild(m_pMaskSprite); // メニューバースプライトの作成 m_pMenuBarSpriteBase = Sprite::create(TEX_MENU_BUTTON); Sprite* pMenuBarSpriteSelected = Sprite::create(TEX_MENU_BUTTON); pMenuBarSpriteSelected->setColor(Color3B(200,200,200)); MenuItemSprite* pMenuBarMenuItemSprite = MenuItemSprite::create(m_pMenuBarSpriteBase, pMenuBarSpriteSelected, CC_CALLBACK_0(PauseScene::returnGameCallback, this)); pMenuBarMenuItemSprite->setPosition(Vec2(565, visibleSize.height - 32)); // ゲーム再開メニュースプライトの作成 m_pReturnGameSpriteBase = Sprite::create(TEX_BUTTON_RETURN_GAME); Sprite* pReturnGameSpriteSelected = Sprite::create(TEX_BUTTON_RETURN_GAME); pReturnGameSpriteSelected->setColor(Color3B(200,200,200)); MenuItemSprite* pReturnGameMenuItemSprite = MenuItemSprite::create(m_pReturnGameSpriteBase, pReturnGameSpriteSelected, CC_CALLBACK_0(PauseScene::returnGameCallback, this)); pReturnGameMenuItemSprite->setPosition(Vec2(visibleSize.width /2,origin.y + 700)); // ゲームやり直しメニュースプライトの作成 m_pRetryGameSpriteBase = Sprite::create(TEX_RESULT_RETRY_BUTTON); Sprite* pRetryGameSpriteSelected = Sprite::create(TEX_RESULT_RETRY_BUTTON); pRetryGameSpriteSelected->setColor(Color3B(200,200,200)); MenuItemSprite* pRetryGameMenuItemSprite = MenuItemSprite::create(m_pRetryGameSpriteBase, pRetryGameSpriteSelected, CC_CALLBACK_0(PauseScene::retryGameCallback, this)); pRetryGameMenuItemSprite->setPosition(Vec2(visibleSize.width / 2,origin.y + 600)); // タイトルリターンメニュースプライトの作成 m_pReturnTitleSpriteBase = Sprite::create(TEX_RESULT_TITLE_BUTTON); Sprite* pReturnTitleSpriteSelected = Sprite::create(TEX_RESULT_TITLE_BUTTON); pReturnTitleSpriteSelected->setColor(Color3B(200,200,200)); MenuItemSprite* pReturnTitleMenuItemSptire = MenuItemSprite::create(m_pReturnTitleSpriteBase, pReturnTitleSpriteSelected, CC_CALLBACK_0(PauseScene::returnTitleCallback, this)); pReturnTitleMenuItemSptire->setPosition(Vec2(visibleSize.width / 2,origin.y + 500)); // メニューの一括登録 Menu* pPauseSceneMenu = Menu::create(pMenuBarMenuItemSprite,pReturnGameMenuItemSprite,pReturnTitleMenuItemSptire,pRetryGameMenuItemSprite, NULL); pPauseSceneMenu->setPosition(Vec2::ZERO); this->addChild(pPauseSceneMenu); // コンフィグスプライト生成 m_pConfigSprite = Sprite::create(); m_pConfigSprite->setTextureRect(Rect(0,0,100,100)); m_pConfigSprite->setColor(Color3B::YELLOW); m_pConfigSprite->setPosition(Vec2(400,200)); //this->addChild(m_pConfigSprite); return true; }
void LevelScene::createLayersContent() { Size winSize = Director::getInstance()->getWinSize(); // create background CSprite* backgroundFace = new CSprite(); backgroundFace->initWithFile(FRAME_BG); backgroundFace->setPosition(winSize.width / 2, winSize.height / 2); this->backgroundLayer->addChild(backgroundFace); // create level title CSprite* chapterTitle = new CSprite(); chapterTitle->initWithSpriteFrameName(FRAME_LEVEL_TITLE); chapterTitle->setPosition(winSize.width / 2, winSize.height - chapterTitle->getContentSize().height / 2 - 20); this->mainLayer->addChild(chapterTitle); // create menu Menu* mainMenu = Menu::create(); mainMenu->setPosition(Point::ZERO); this->mainLayer->addChild(mainMenu); // create back button MenuItemSprite* backButton = CNodeUtil::createButton(FRAME_BACK_BUTTON, FRAME_BACK_BUTTON_SELECTED); backButton->setCallback(CC_CALLBACK_1(LevelScene::backButtonClick, this)); backButton->setPosition(winSize.width / 2, 20 + backButton->getContentSize().height / 2); mainMenu->addChild(backButton); // create level layer this->levelLayer = Layer::create(); int levelTotal = CONFIG_LEVELS_PER_CHAPTER; int totalPageSize = ((levelTotal - 1) / CONF_TOTAL_LEVEL_SIZE_PER_PAGE) + 1; int levelPerPage = CONF_TOTAL_LEVEL_SIZE_PER_PAGE; int levelPerRow = levelPerPage / CONF_TOTAL_LEVEL_ROW; int previousLevelTotal = this->getTotalPreviousLevel(this->currentChapter); this->levelLayer->setContentSize(Size(winSize.width * totalPageSize, winSize.height / 1.5)); this->levelLayer->setPosition(0, winSize.height / 2 - this->levelLayer->getContentSize().height / 2); this->levelLayerOffset = this->levelLayer->getPosition(); this->mainLayer->addChild(this->levelLayer); for (int i = 0; i < levelTotal; i++) { int level = i + 1; CSprite* levelFace = new CSprite(); int realLevel = level + previousLevelTotal; // if (gameModel->checkMapLock(realLevel)) { levelFace->initWithSpriteFrameName(FRAME_BOX_LEVEL); levelFace->setTag(realLevel); { char levelChar[10]; sprintf(levelChar, "%d", level); Label* levelLabel = CNodeUtil::createLabelTTF(levelChar, 12); levelLabel->setPosition(levelFace->getContentSize().width / 2, levelFace->getContentSize().height / 2); levelFace->addChild(levelLabel); } // } else { // levelFace->initWithSpriteFrameName(ANI_BOX_MAP_LOCK); // levelFace->setTag(-1); // } this->levelLayer->addChild(levelFace); int page = i / levelPerPage; int row = ((level - (page * levelPerPage)) - 1) / levelPerRow; int column = i % levelPerRow; Point pagePosition = Point(winSize.width * page, 0); float totalWidth = levelFace->getContentSize().width * levelPerRow + (10 * (levelPerRow + 1)); float totalHeight = levelFace->getContentSize().height * CONF_TOTAL_LEVEL_ROW + (10 * (CONF_TOTAL_LEVEL_ROW + 1)); float initX = (winSize.width - totalWidth) / 2; float initY = this->levelLayer->getContentSize().height - ((this->levelLayer->getContentSize().height - totalHeight) / 2); float levelPositionX = initX + (10 * (column + 1)) + (levelFace->getContentSize().width / 2 * (column + 1)) + (levelFace->getContentSize().width / 2 * column); float levelPositionY = initY - (10 * (row + 1)) - (levelFace->getContentSize().height / 2 * (row + 1)) - (levelFace->getContentSize().height / 2 * row); levelFace->setPosition(Point(levelPositionX, levelPositionY) + pagePosition); } }
bool HomeLayer::init(){ bool isDay = UserDefault::getInstance()->getBoolForKey(DayTime, true); string file = "modify/day_bg.png"; if (isDay == false) { file = string("modify/night_bg.png"); } if (GameLayerBase::initWithBgFileName(file.c_str())) { Sprite* centerTitle = Sprite::create("modify/title.png"); centerTitle->setAnchorPoint(Vec2(0.5, 1.0)); centerTitle->setPosition(STVisibleRect::getCenterOfScene().x, STVisibleRect::getPointOfSceneLeftUp().y - 60); addChild(centerTitle, 1); // // TableViewTest* pLayer = TableViewTest::create(); // this->addChild(pLayer, 2); MenuItemSprite* lightBtn = CocosHelper::menuItemSprite("modify/night.png"); MenuItemSprite* settingBtn = CocosHelper::menuItemSprite("modify/setting.png"); MenuItemSprite* vedioBtn = CocosHelper::menuItemSprite("modify/video.png"); string soundFile = "modify/sound1.png"; if (!SoundPlayer::getInstance()->isMusicOpen()) { soundFile = "modify/sound2.png"; } MenuItemSprite* soundBtn = CocosHelper::menuItemSprite(soundFile.c_str()); MenuItemSprite* shareBtn = CocosHelper::menuItemSprite("modify/share.png"); lightBtn->setTag(kLightBtnTag); settingBtn->setTag(kSettingBtnTag); vedioBtn->setTag(kVedioBtnTag); soundBtn->setTag(kSoundBtnTag); shareBtn->setTag(kShareBtnTag); lightBtn->setAnchorPoint(Vec2(0, 0)); settingBtn->setAnchorPoint(Vec2(1.0, 0)); vedioBtn->setAnchorPoint(Vec2(0.5, 0)); soundBtn->setAnchorPoint(Vec2(1.0, 0)); shareBtn->setAnchorPoint(Vec2(1.0, 0)); lightBtn->setPosition(Vec2(STVisibleRect::getOriginalPoint().x + 15, 60*0.618+STVisibleRect::getOriginalPoint().y)); settingBtn->setPosition(Vec2(STVisibleRect::getPointOfSceneRightBottom().x - 15, 60*0.618 + STVisibleRect::getOriginalPoint().y)); vedioBtn->setPosition(Vec2(STVisibleRect::getCenterOfScene().x, lightBtn->getBoundingBox().getMaxY() + 15)); soundBtn->setPosition(settingBtn->getPosition()+Vec2(15, 0)); shareBtn->setPosition(settingBtn->getPosition()+Vec2(15, 0)); lightBtn->setCallback(CC_CALLBACK_1(HomeLayer::onClickedMenuItems, this)); settingBtn->setCallback(CC_CALLBACK_1(HomeLayer::onClickedMenuItems, this)); vedioBtn->setCallback(CC_CALLBACK_1(HomeLayer::onClickedMenuItems, this)); Menu* pBtns = Menu::create(lightBtn, settingBtn, vedioBtn, NULL); pBtns->setAnchorPoint(Vec2(0, 0)); pBtns->setPosition(Vec2(0, 0)); addChild(pBtns, 2); float maxHeight = centerTitle->getBoundingBox().getMidY() - vedioBtn->getBoundingBox().getMaxY(); log("the max height is %.2f", maxHeight); float tableHeight = maxHeight - 100*1.618; float tableWidth = STVisibleRect::getGlvisibleSize().width - 200*0.618; log("the tablewidth is %.2f, and the tableheight is %.2f", tableWidth, tableHeight); int w = (int)tableWidth; int h = (int)tableHeight; TableViewTest* pLayer = TableViewTest::create(Size(w, h)); pLayer->setPosition(Vec2(100*0.618 + STVisibleRect::getOriginalPoint().x, vedioBtn->getBoundingBox().getMaxY() + 100*0.618)); addChild(pLayer, 10); pLayer->setDelegate(this); return true; } return false; }
void ChapterScene::createLayersContent() { GameModel* gameModel = GameModel::getInstance(); Size displayResolutionSize = gameModel->getDisplayResolutionSize(); Face* backgroundFace = new Face(); backgroundFace->initWithFile(ANI_BACKGROUND); backgroundFace->setScale(CONF_FAKE_1); backgroundFace->setPosition(displayResolutionSize.width / 2, displayResolutionSize.height / 2); this->backgroundLayer->addChild(backgroundFace); Face* chapterTitle = new Face(); chapterTitle->initWithSpriteFrameName(ANI_CHAPTER_TITLE); chapterTitle->setPosition(displayResolutionSize.width / 2, displayResolutionSize.height - chapterTitle->getContentSize().height / 2 - 20); this->mainLayer->addChild(chapterTitle); UGMenu* mainMenu = UGMenu::create(); mainMenu->setPosition(Point::ZERO); this->mainLayer->addChild(mainMenu); MenuItemSprite* backButton = Utils::createButton((char*) TXT_BACK, 16, ANI_BUTTON, ANI_BUTTON); backButton->setCallback(CC_CALLBACK_1(ChapterScene::backButtonClick, this)); backButton->setPosition(gameModel->getDisplayResolutionSize().width / 2, 20 + backButton->getContentSize().height / 2); mainMenu->addChild(backButton); this->nodes->setObject(backButton, NODE_BUTTON_BACK); // create chapters this->chapterLayer = UGLayerColor::create(); float totalChapterSize = gameModel->getMapData()->getLevelSize(); float distancePerChapter = CONF_DISTANCE_PER_CHAPTER; float totalChapterWidth = (totalChapterSize - 1) * distancePerChapter; Face* chapterTemp = new Face(); chapterTemp->initWithSpriteFrameName(ANI_BOX_CHAPTER); this->chapterTempSize = chapterTemp->getContentSize(); this->chapterLayer->setContentSize(Size(totalChapterWidth + this->chapterTempSize.width, displayResolutionSize.height / 2)); this->chapterLayer->setPosition(displayResolutionSize.width / 2 - this->chapterTempSize.width / 2, displayResolutionSize.height / 2 - this->chapterLayer->getContentSize().height / 2); this->chapterLayerOffset = this->chapterLayer->getPosition(); this->mainLayer->addChild(this->chapterLayer); float posX = this->chapterTempSize.width / 2; float posY = this->chapterLayer->getContentSize().height / 2; for (int i = 0; i < totalChapterSize; i++) { Face* levelBox = new Face(); if (!gameModel->checkLevelLock(i + 1)) { levelBox->initWithSpriteFrameName(ANI_BOX_CHAPTER); levelBox->setTag(i + 1); { int chapter = gameModel->getMapData()->getChapter(i + 1); int chapterLevel = gameModel->getMapData()->getChapterLevel(i + 1); char mapPath[200]; sprintf(mapPath, DOC_BG_MAP, chapter, chapterLevel); SpriteFrameCache* sfc = SpriteFrameCache::getInstance(); sfc->addSpriteFramesWithFile(mapPath); char bg1Path[200]; sprintf(bg1Path, ANI_MAP, chapter, chapterLevel, 1); Face* chapterThumb = new Face(); chapterThumb->initWithSpriteFrameName(bg1Path); chapterThumb->setPosition(levelBox->getContentSize().width / 2, levelBox->getContentSize().height / 2 - 10); chapterThumb->setTextureRect(Rect(0, 0, 160, 115)); levelBox->addChild(chapterThumb); string levelName = gameModel->getMapData()->getLevelName(i + 1); char levelNameChar[200]; sprintf(levelNameChar, "%s", levelName.data()); Label* levelNameLabel = Label::createWithBMFont(FONT_GAME_SMALL, levelNameChar); levelNameLabel->setPosition(chapterThumb->getPosition() + Point(0, chapterThumb->getContentSize().height / 2 + 12)); levelBox->addChild(levelNameLabel); } } else { levelBox->setTag(-1); levelBox->initWithSpriteFrameName(ANI_BOX_CHAPTER_LOCK); } levelBox->setPosition(posX, posY); posX = posX + distancePerChapter; this->chapterLayer->addChild(levelBox); } // add parent button for share layer this->shareLayer->getParentButtons()->pushBack((MenuItemSprite*) this->nodes->objectForKey(NODE_BUTTON_BACK)); }
bool MapLayer::init() { if(!Layer::init()) { return false; } cocos2d::Size s = Director::getInstance()->getWinSize(); DoodleTruck *doodleTruck = DoodleTruck::sharedDoodleTruck(); Sprite * bg_sprite = XSprite::xspriteWithFile(IMG_SPRITE_BG); this->addChild(bg_sprite); bg_sprite->setPosition(Vec2(s.width/2, s.height/2)); int cols = MAX_MAP / 2; for (int i = 0; i < MAX_MAP; i++) { char s1[100], s2[100]; sprintf(s1, "select level_%02d_nml.png", i + 1); sprintf(s2, "select level_%02d_act.png", i + 1); std::string level_nml = s1; std::string level_act = s2; Sprite *level_normal = XSprite::xspriteWithFile(level_nml); Sprite *level_select = XSprite::xspriteWithFile(level_act); //MenuItemSprite *item = [CCMenuItemImage itemFromNormalSprite:level_normal selectedSprite:level_select target:self selector:@selector(onMap:)]; //MenuItemSprite *[item = MenuItemImage::create(level_normal, level_select, <#const std::string &disabledImage#>, //); MenuItemSprite* item = MenuItemSprite::create(level_normal, level_select, NULL, this, menu_selector(MapLayer::onMap)); map_menu[i] = item; int col = i % cols + 1; int row = i / cols; item->setPosition(Vec2(s.width / (cols + 1) * col, s.height / 4.0f * (3 - row))); int recorded_count = getRecordedCount(i); int star_index = 0; if (recorded_count >= getFineStoneNum(i)) star_index = 2; else if (recorded_count >= getPassStoneNum(i)) star_index = 1; if (star_index) { Sprite *star_sprite = XSprite::xspriteWithFile("");//:[NSString stringWithFormat:@"star_%d.png", star_index]]; item->addChild(star_sprite); star_sprite->setPosition(Vec2(star_sprite->getContentSize().width /2, star_sprite->getContentSize().height /2)); } } menu = Menu::createWithItem(map_menu[0]); for (int i = 1; i < MAX_MAP; i++) menu->addChild(map_menu[i]); map_menu[doodleTruck->getMapIndex()]->selected(); Sprite *back_normal = XSprite::xspriteWithFile(IMG_BACK_NOR); Sprite *back_select = XSprite::xspriteWithFile(IMG_BACK_HIGH); MenuItemSprite* item_back = MenuItemSprite::create(back_normal, back_select, NULL, this, menu_selector(MapLayer::onBack)); Sprite *ok_normal = XSprite::xspriteWithFile(IMG_OK_NOR); Sprite *ok_select = XSprite::xspriteWithFile(IMG_OK_HIGH); MenuItemSprite* item_ok = MenuItemSprite::create(ok_normal, ok_select, NULL, this, menu_selector(MapLayer::onOk)); menu->addChild(item_back); menu->addChild(item_ok); item_back->setPosition(Vec2(s.width / 2.0f - s.width / 5.0f, item_back->getContentSize().height)); item_ok->setPosition(Vec2(s.width / 2.0f + s.width / 5.0f, item_ok->getContentSize().height)); menu->setPosition(Vec2(s.width, 0)); this->addChild(menu); doneEnter(); return true; }
void PlayLayer::initToolLayer() { auto size = Director::getInstance()->getWinSize(); //add by auto zoom = size.height / 864; toolLayer = Layer::create(); addChild(toolLayer); spritetool = Sprite::createWithSpriteFrameName("status.png"); //auto spritetool = Sprite::create("status.png"); //add by auto statussize=spritetool->getContentSize(); //auto patchsize=(size.width - statussize.width)/2; spritetool->setAnchorPoint(Point(0.5f, 1)); spritetool->setPosition (Point(size.width / 2, size.height)); toolLayer->addChild(spritetool); //金币像素 54;波数370,分数 484;怪数 684,分数 790;生命1060,add by money = instance->getMoney(); moneyLabel = Label::createWithBMFont("fonts/bitmapFontChinese.fnt", " "); // moneyLabel->setPosition(Point(spritetool->getContentSize().width / 8, spritetool->getContentSize().height / 2)); //由于该图片被整体所放过,所有要相应进行像素处理。 moneyLabel->setPosition(Point( 54* zoom, spritetool->getContentSize().height / 2)); moneyLabel->setAnchorPoint(Point(0, 0.5f)); //modify by char countBuf3[16] = ""; sprintf(countBuf3, "%d", money); auto moneyText = countBuf3; // //auto moneyText = std::to_string(money); moneyLabel->setString(moneyText); spritetool->addChild(moneyLabel); //波数的分数 //int groupTotal = instance->getGroupNum(); int temp =1; char countBuf5[16] = ""; sprintf(countBuf5, "%d",temp); groupcurrLabel = Label::createWithBMFont("fonts/bitmapFontChinese.fnt", " "); auto groupInfoText2 = countBuf5; groupcurrLabel->setPosition(Point(370 * zoom , spritetool->getContentSize().height / 2 )); groupcurrLabel->setAnchorPoint(Point(0.0f , 0.5f)); groupcurrLabel->setString(groupInfoText2); spritetool->addChild(groupcurrLabel); //总共波数 int groupTotal = instance->getGroupNum(); groupLabel = Label::createWithBMFont("fonts/bitmapFontChinese.fnt", " "); groupLabel->setPosition(Point(484 * zoom , spritetool->getContentSize().height / 2 )); groupLabel->setAnchorPoint(Point(0.0f , 0.5f)); char countBuf4[16] = ""; sprintf(countBuf4, "%d", groupTotal); auto groupInfoText = countBuf4; groupLabel->setString(groupInfoText); spritetool->addChild(groupLabel); //by //当前波的怪物 char countBuf6[16] = ""; sprintf(countBuf6, "%d", temp); auto groupTotalText3 = countBuf6; numcurrLabel = Label::createWithBMFont("fonts/bitmapFontChinese.fnt", " "); numcurrLabel->setPosition(Point( 684 * zoom , spritetool->getContentSize().height / 2 )); numcurrLabel->setAnchorPoint(Point(0.0f , 0.5f)); numcurrLabel->setString(groupTotalText3); spritetool->addChild(numcurrLabel); //当前波的怪物 分数 char countBuf7[16] = ""; auto en= instance->getEnemyNum(); sprintf(countBuf7, "%d", en); auto groupTotalText4 = countBuf7; numLabel = Label::createWithBMFont("fonts/bitmapFontChinese.fnt", " "); numLabel->setPosition(Point( 790 * zoom , spritetool->getContentSize().height / 2 )); numLabel->setAnchorPoint(Point(0.0f , 0.5f)); numLabel->setString(groupTotalText4); spritetool->addChild(numLabel); //当前生命值的 分数 char countBuf8[16] = ""; sprintf(countBuf8, "100"); auto groupTotalText5 = countBuf8; hpLabel = Label::createWithBMFont("fonts/bitmapFontChinese.fnt", " "); hpLabel->setPosition(Point( 1060 * zoom , spritetool->getContentSize().height / 2 )); hpLabel->setAnchorPoint(Point(0.0f , 0.5f)); hpLabel->setString(groupTotalText5); spritetool->addChild(hpLabel); // back //add by Sprite *backItem1 = CCSprite::createWithSpriteFrameName("btn_back.png"); Sprite *backItem2 = CCSprite::createWithSpriteFrameName("btn_back_press.png"); MenuItemSprite *pPauseItem = MenuItemSprite::create(backItem1, backItem2, CC_CALLBACK_1(PlayLayer::menuBackCallback, this)); pPauseItem->setPosition(Point(spritetool->getContentSize().width + backItem1->getContentSize().width / 2, spritetool->getContentSize().height / 2)); pPauseItem->setAnchorPoint(Point(0, 0.5f)); Menu* pMenu = Menu::create(pPauseItem, NULL); pMenu->setPosition(Point::ZERO); spritetool->addChild(pMenu); }
bool PopupLayer::initSuspendLayer(int gameType) { if(!LayerColor::initWithColor(Color4B(255, 255, 255, 120))) { return false; } Size visibleSize = Director::getInstance()->getVisibleSize(); //set menu layer properties switch (userTheme) { case PINK: menuLayer = LayerColor::create(Color4B(234, 97, 137, 255)); break; case GRAY: menuLayer = LayerColor::create(Color4B(194, 194, 194, 255)); break; case BLUE: menuLayer = LayerColor::create(Color4B(20, 142, 204, 255)); break; case JELLY: menuLayer = LayerColor::create(Color4B(90, 191, 188, 255)); break; case DARK: menuLayer = LayerColor::create(Color4B(50, 50, 50, 255)); break; default: menuLayer = LayerColor::create(Color4B(20, 142, 204, 255)); break; } menuLayer->setContentSize(Size(350, 200)); menuLayer->ignoreAnchorPointForPosition(false); menuLayer->setAnchorPoint(Point(0.5, 0.5)); menuLayer->setPosition(Point(visibleSize.width / 2, visibleSize.height / 2)); //add label "suspend" auto *suspendLabel = Label::create("Suspend", "Futura.ttf", 30); suspendLabel->setPosition(Point(menuLayer->getContentSize().width / 2, menuLayer->getContentSize().height / 2 + 50)); //add menus icons Sprite *homeButton = Sprite::create("home.png"); Sprite *activeHomeButton = Sprite::create("home.png"); activeHomeButton->setPositionY(5); auto homeMenuItem = MenuItemSprite::create(homeButton, activeHomeButton, NULL, CC_CALLBACK_1(PopupLayer::homeCallBack, this)); homeMenuItem->setPosition(menuLayer->getContentSize().width / 2 - 100, menuLayer->getContentSize().height / 2 - 30); auto homeMenu = Menu::create(homeMenuItem, NULL); homeMenu->setPosition(Point(0, 0)); Sprite *resumeButton = Sprite::create("start.png"); Sprite *activeResumeButton = Sprite::create("start.png"); activeResumeButton->setPositionY(5); MenuItemSprite *resumeMenuItem; if (gameType == 1) { resumeMenuItem = MenuItemSprite::create(resumeButton, activeResumeButton, NULL, CC_CALLBACK_1(PopupLayer::resumeNormalMode, this)); }else { resumeMenuItem = MenuItemSprite::create(resumeButton, activeResumeButton, NULL, CC_CALLBACK_1(PopupLayer::resumeGetTheOne, this)); } resumeMenuItem->setPosition(menuLayer->getContentSize().width / 2, menuLayer->getContentSize().height / 2 - 30); auto resumeMenu = Menu::create(resumeMenuItem, NULL); resumeMenu->setPosition(Point(0, 0)); Sprite *restartButton = Sprite::create("restart.png"); Sprite *activeRestartButton = Sprite::create("restart.png"); activeRestartButton->setPositionY(5); MenuItemSprite *restartMenuItem; if (gameType == 1) { restartMenuItem = MenuItemSprite::create(restartButton, activeRestartButton, NULL, CC_CALLBACK_1(PopupLayer::restartNormalMode, this)); }else{ restartMenuItem = MenuItemSprite::create(restartButton, activeRestartButton, NULL, CC_CALLBACK_1(PopupLayer::restartGetTheOne, this)); } restartMenuItem->setPosition(menuLayer->getContentSize().width / 2 + 100, menuLayer->getContentSize().height / 2 - 30); auto restartMenu = Menu::create(restartMenuItem, NULL); restartMenu->setPosition(Point(0, 0)); //add shadow for menuLayer auto *shadowLayer = LayerColor::create(Color4B(100, 100, 100, 100)); shadowLayer->setContentSize(Size(350, 200)); shadowLayer->ignoreAnchorPointForPosition(false); shadowLayer->setAnchorPoint(Point(0.5, 0.5)); shadowLayer->setPosition(Point(visibleSize.width / 2 + 8, visibleSize.height / 2 - 8)); menuLayer->addChild(suspendLabel); menuLayer->addChild(homeMenu); menuLayer->addChild(resumeMenu); menuLayer->addChild(restartMenu); this->addChild(shadowLayer); this->addChild(menuLayer); //swallow touch auto callback = [](Touch * ,Event *) { return true; }; //add event listener auto listener = EventListenerTouchOneByOne::create(); listener->onTouchBegan = callback; listener->setSwallowTouches(true); _eventDispatcher->addEventListenerWithSceneGraphPriority(listener,this); 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(); //add image texture to cache SpriteFrameCache* frameCache = SpriteFrameCache::getInstance(); frameCache->addSpriteFramesWithFile("WormHeroSaga.plist"); //create background auto background = Sprite::createWithSpriteFrameName("Background.png"); background->setPosition(visibleSize/2); this->addChild(background); moon = Sprite::createWithSpriteFrameName("MoonLaugh.png"); moon->setPosition(Director::getInstance()->convertToGL(Vec2(490,234))); this->addChild(moon); //Start button Sprite* startButtonItem_normal = Sprite::createWithSpriteFrameName("StartButton_normal.png"); Sprite* startButtonItem_onClick = Sprite::createWithSpriteFrameName("StartButton_onClick.png"); MenuItemSprite* startButton = MenuItemSprite::create(startButtonItem_normal, startButtonItem_onClick, CC_CALLBACK_1(HelloWorld::startButtonCallBack, this)); startButton->setPosition(Director::getInstance()->convertToGL(Vec2(visibleSize.width/2,730))); startMenu = Menu::create(startButton, NULL); startMenu->setPosition(Vec2::ZERO); startMenu->setTag(START_TAG); this->addChild(startMenu); //add stop button with setting menus Sprite* stopButton = Sprite::createWithSpriteFrameName("StopButton.png"); MenuItemSprite* stopButtonItem = MenuItemSprite::create(stopButton, stopButton, CC_CALLBACK_1(HelloWorld::stopButtonCallBack, this)); stopButtonItem->setPosition(Director::getInstance()->convertToGL(Vec2(71,38))); stopMenu = Menu::create(stopButtonItem, NULL); stopMenu->setPosition(Vec2::ZERO); stopMenu->setTag(STOP_TAG); stopMenu->setVisible(false); this->addChild(stopMenu); //below list set menu //music setting in setting menu Sprite* musicOn = Sprite::createWithSpriteFrameName("MusicOn.png"); Sprite* musicOff = Sprite::createWithSpriteFrameName("MusicOff.png"); auto musicOnSprite = MenuItemSprite::create(musicOn,musicOn); auto musicOffSprite = MenuItemSprite::create(musicOff,musicOff); auto musicToggleMenuItem = MenuItemToggle::createWithCallback(CC_CALLBACK_1(HelloWorld::MusicOnCallBack, this), musicOnSprite, musicOffSprite, NULL); musicToggleMenuItem->setPosition(Director::getInstance()->convertToGL(Vec2(visibleSize.width/2-10, 550))); //effect setting in setting menu Sprite* effectOn = Sprite::createWithSpriteFrameName("EffectOn.png"); Sprite* effectOff = Sprite::createWithSpriteFrameName("EffectOff.png"); auto effectOnSprite = MenuItemSprite::create(effectOn,effectOn); auto effectOffSprite = MenuItemSprite::create(effectOff,effectOff); auto effectToggleMenuItem = MenuItemToggle::createWithCallback(CC_CALLBACK_1(HelloWorld::MusicOnCallBack, this), effectOnSprite, effectOffSprite, NULL); effectToggleMenuItem->setPosition(Director::getInstance()->convertToGL(Vec2(visibleSize.width/2, 730))); //play setting in setting menu Sprite* PlayButton = Sprite::createWithSpriteFrameName("PlayButton.png"); MenuItemSprite* PlayButtonItem = MenuItemSprite::create(PlayButton, PlayButton, CC_CALLBACK_1(HelloWorld::playCallBack, this)); PlayButtonItem->setPosition(Director::getInstance()->convertToGL(Vec2(visibleSize.width/2, 910))); //add all items into setMenu setMenu = Menu::create(musicToggleMenuItem, effectToggleMenuItem, PlayButtonItem, NULL); setMenu->setPosition(Vec2::ZERO); this->addChild(setMenu); setMenu->setVisible(false); return true; }