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 ); }
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 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; } }
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; }
//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); }
// 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; }
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); }
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; }
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; }
// 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 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()); } }
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; }
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); } }
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 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; }
// 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; }
//================================================================================ // シーン初期化 //================================================================================ 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; }
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; }
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 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; }
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; }
bool HelloWorld::init(PhysicsWorld* world,int _level) { if ( !Layer::init() ) { return false; } level = _level; //NotificationCenter::getInstance()->addObserver(this, callfuncO_selector(HelloWorld::setLevel), "selectedLevel", NULL); dispatcher = Director::getInstance()->getEventDispatcher(); preLoadMusic(); playBgMusic(); m_world = world; //m_world->setAutoStep(false); m_world->setGravity(Vect(0,-grivity)); this->setAnchorPoint(Point(0,0)); winSize = Director::getInstance()->getWinSize(); visibleSize = Director::getInstance()->getVisibleSize(); origin = Director::getInstance()->getVisibleOrigin(); auto map1path = String::createWithFormat("%s%d%s","images/level",level,"/bg.png"); map1 = Sprite::create(map1path->getCString()); map1->setPosition(map1->getContentSize().width/2+origin.x, map1->getContentSize().height/2+origin.y); this->addChild(map1,1,MAP1_TAG); auto map2path = String::createWithFormat("%s%d%s", "images/level", level, "/bg.png"); map2 = Sprite::create(map2path->getCString()); map2->setPosition(map1->getContentSize().width+map2->getContentSize().width/2+origin.x, map2->getContentSize().height/2+origin.y); this->addChild(map2,1,MAP2_TAG); Sprite* edge1 = Sprite::create(); edge1->setContentSize(visibleSize); PhysicsBody* edgeBody1 = PhysicsBody::createEdgeBox(visibleSize); edgeBody1->setDynamic(false); edgeBody1->setGravityEnable(false); edgeBody1->setMass(100000.0f); edgeBody1->getShape(0)->setRestitution(0.0f); edgeBody1->setContactTestBitmask(0xFF); edgeBody1->setCategoryBitmask(0x04); edgeBody1->setCollisionBitmask(0xFF); edgeBody1->getShape(0)->setTag(EDGE_TAG); edge1->setPhysicsBody(edgeBody1); edge1->setPosition(visibleSize.width/2,visibleSize.height/2); addChild(edge1,1,EDGEONE_TAG); Sprite* edge = Sprite::create(); edge->setContentSize(visibleSize); PhysicsBody* edgeBody = PhysicsBody::createEdgeBox(Size(visibleSize.width,visibleSize.height/6)); edgeBody->setDynamic(false); edgeBody->setGravityEnable(false); edgeBody->setMass(100000.0f); edgeBody->getShape(0)->setRestitution(0.0f); edgeBody->setContactTestBitmask(0xFF); edgeBody->setCategoryBitmask(0x04); edgeBody->setCollisionBitmask(0xFF); edgeBody->getShape(0)->setTag(EDGE_TAG); edge->setPhysicsBody(edgeBody); edge->setPosition(visibleSize.width / 2, visibleSize.height / 12); addChild(edge, 1, EDGE_TAG); Sprite* floor = Sprite::create(); PhysicsBody* floorBody = PhysicsBody::createEdgeSegment(Point(0, visibleSize.height / 10), Point(visibleSize.width, visibleSize.height / 10)); floorBody->setDynamic(false); floorBody->setGravityEnable(false); floorBody->getShape(0)->setRestitution(0.0f); floorBody->setMass(100000.0f); floorBody->setCategoryBitmask(0x0003); floorBody->setContactTestBitmask(0x0003); floorBody->setCollisionBitmask(0x0001); floor->setPosition(0, visibleSize.height / 10); floor->setPhysicsBody(floorBody); //this->addChild(floor,2,FLOOR_TAG); setEnemyFrameNumber(); setPlayerFrameNumber(); initDamage(); player1 = new player(); auto playerPath = String::createWithFormat("%s%d%s", "images/level", level, "/player.png"); player1->sprite = Sprite::create(playerPath->getCString()); PhysicsBody* playerBody = PhysicsBody::createBox(player1->sprite->getContentSize()); playerBody->setRotationEnable(false); playerBody->getShape(0)->setRestitution(0.0f); playerBody->getShape(0)->setFriction(0.8f); playerBody->setMass(player1->mass); playerBody->setCollisionBitmask(0x04); playerBody->setCategoryBitmask(0x01); playerBody->setContactTestBitmask(0xFF); playerBody->getShape(0)->setTag(PLAYER_TAG); player1->sprite->setPhysicsBody(playerBody); player1->sprite->setPosition(player1->sprite->getContentSize().width/2+5, floor->getPositionY()+player1->sprite->getContentSize().height*3); addChild(player1->sprite,2,PLAYER_TAG); preLoadAnimation(); auto backItem = MenuItemImage::create("images/CloseNormal.png", "images/CloseSelected.png", CC_CALLBACK_0(HelloWorld::backToChoseLevel, this)); //auto pauseItem = MenuItemImage::create("CloseNormal.png", "CloseSelected.png", CC_CALLBACK_0(HelloWorld::pauseScene, this)); auto popupItem = MenuItemImage::create("images/CloseNormal.png", "images/CloseSelected.png", CC_CALLBACK_0(HelloWorld::toPopup, this)); //pauseItem->setPosition(-backItem->getContentSize().width,0); popupItem->setPosition(0,0); backItem->setPosition(backItem->getContentSize().width,0); auto backmenu = Menu::create(popupItem,backItem,NULL); backmenu->setPosition(visibleSize.width - backItem->getContentSize().width*2, visibleSize.height - backItem->getContentSize().height / 2); addChild(backmenu, 10); hpLayer = HPLayer::create(); hpLayer->setPosition(0, visibleSize.height / 15 * 14); addChild(hpLayer, 2, HPLAYER_TAG); Vector<MenuItem*> attackLogoItems; MenuItemSprite* attackLogoItem; for (int i = 0; i < ATTACKNUMBER; i++){ auto logoPath = String::createWithFormat("%s%d%s%d%s", "images/level", level, "/attack", i, "/logo.png"); auto normalSprite = Sprite::create(logoPath->getCString()); normalSprite->setOpacity(200); auto selectedSprite = Sprite::create(logoPath->getCString()); attackLogoItem = MenuItemSprite::create(normalSprite, selectedSprite, CC_CALLBACK_0(player::setAttack, player1, i)); attackLogoItem->setPosition(Vec2(0, -i*attackLogoItem->getContentSize().height)); attackLogoItems.pushBack(attackLogoItem); } auto attackLogoMenu = Menu::createWithArray(attackLogoItems); attackLogoMenu->setPosition(visibleSize.width - attackLogoItem->getContentSize().width, visibleSize.height / 2 + 2 * attackLogoItem->getContentSize().height); addChild(attackLogoMenu, 10); onTouchEvent(); onKeyBoardEvent(); physicsEvent(); EventCustom e("custom"); dispatcher->dispatchEvent(&e); enemyComing(1.0f); this->schedule(schedule_selector(HelloWorld::enemyComing), 5.0f); this->schedule(schedule_selector(HelloWorld::enemyAttack), 2.0f); this->scheduleUpdate(); log("init"); return true; }