bool AboutLayer::init() { if (!Layer::init()) { return false; } auto visibleSize = Director::getInstance()->getVisibleSize(); auto origin = Director::getInstance()->getVisibleOrigin(); auto bg = Sprite::create("background.png"); bg->setAnchorPoint(Vec2::ZERO); bg->setPosition(Vec2::ZERO); this->addChild(bg); auto aboutMsg = Sprite::createWithSpriteFrameName("AboutMsg.png"); aboutMsg->setAnchorPoint(Vec2::ANCHOR_MIDDLE); aboutMsg->setPosition(Vec2(visibleSize.width/2.0f,visibleSize.height/2.0f)); addChild(aboutMsg); auto backItem = MenuItemImage::create(); backItem->setNormalSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("backNormal.png")); backItem->setSelectedSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("backPressed.png")); backItem->setCallback([](Ref* sender){ Director::getInstance()->popScene(); }); backItem->setPosition(Vec2(visibleSize.width/2.0f, backItem->getContentSize().height*3.0f)); auto menu = Menu::create(backItem, nullptr); menu->setPosition(Vec2::ZERO); menu->setAnchorPoint(Vec2::ZERO); addChild(menu); return true; }
void GameLayer::showDialog() { if (isPaused || isTouched)return; else isPaused = true; this->unscheduleUpdate(); dispatcher->removeEventListener(eventTouch); dialog = LayerColor::create(Color4B(0.0f, 0.0f, 0.0f, 128.0f)); dialog->setOpacity(0.0f); this->addChild(dialog, 6); dialog->runAction(FadeTo::create(0.15f, 128.0f)); auto frame = SpriteFrameCache::getInstance()->getSpriteFrameByName("Button5.png"); auto b1 = MenuItemImage::create("", "", CC_CALLBACK_1(GameLayer::buttonCallback, this)); b1->setNormalSpriteFrame(frame); b1->setSelectedSpriteFrame(frame); b1->setPosition(-300.0f, 0.0f); b1->setTag(1); b1->setOpacity(0.0f); b1->runAction(FadeIn::create(0.2f)); frame = SpriteFrameCache::getInstance()->getSpriteFrameByName("Button4.png"); auto b2 = MenuItemImage::create("", "", CC_CALLBACK_1(GameLayer::buttonCallback, this)); b2->setNormalSpriteFrame(frame); b2->setSelectedSpriteFrame(frame); b2->setPosition(300.0f, 0.0f); b2->setTag(2); b2->setOpacity(0.0f); b2->runAction(FadeIn::create(0.2f)); auto m = Menu::create(b1, b2, nullptr); m->setPosition(Global::getPointCenter()); dialog->addChild(m, 2); auto l1 = TextBase::createText(textTypeHome); l1->setPosition(Global::getPointCenter() + Vec2(-300.0f, -190.0f)); l1->setOpacity(0.0f); dialog->addChild(l1, 3); l1->runAction(FadeIn::create(0.2f)); auto l2 = TextBase::createText(textTypeContinue); l2->setPosition(Global::getPointCenter() + Vec2(300.0f, -190.0f)); l2->setOpacity(0.0f); dialog->addChild(l2, 3); l2->runAction(FadeIn::create(0.2f)); }
bool GameLayer::init() { if (!LayerColor::initWithColor(Color4B(255, 255, 255, 255))) { return false; } dockUp = Sprite::createWithSpriteFrameName("Dock.png"); dockUp->setPosition(Global::getWinSizeHalfX(), Global::getWinSizeY() + 100.0f); this->addChild(dockUp, 4); dockDown = Sprite::createWithSpriteFrameName("Dock.png"); dockDown->setPosition(Global::getWinSizeHalfX(), -100.0f); this->addChild(dockDown, 4); scoreLabel = Label::createWithTTF("0", "fonts/Marker Felt.ttf", 100.0f); scoreLabel->setPosition(dockUp->getContentSize().width*0.5f + Global::getWinSizeX()*0.25f, dockUp->getContentSize().height*0.5f); scoreLabel->setTextColor(Color4B::BLACK); dockUp->addChild(scoreLabel, 5); lifeLabel = Label::createWithTTF("0", "fonts/Marker Felt.ttf", 100.0f); lifeLabel->setPosition(dockUp->getContentSize().width*0.5f - Global::getWinSizeX()*0.25f, dockUp->getContentSize().height*0.5f); lifeLabel->setTextColor(Color4B::BLACK); dockUp->addChild(lifeLabel, 5); background = Sprite::create("Background.png"); background->setPosition(Global::getPointCenter()); background->setOpacity(50.0f); this->addChild(background); #if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS) auto frame = SpriteFrameCache::getInstance()->getSpriteFrameByName("Pause.png"); auto pause = MenuItemImage::create("", "", CC_CALLBACK_1(GameLayer::buttonCallback, this)); pause->setScale(0.5f); pause->setNormalSpriteFrame(frame); pause->setSelectedSpriteFrame(frame); pause->setTag(3); pause->setPosition(Global::getWinSizeX() - 50.0f, Global::getWinSizeY() - 50.0f); pause->setAnchorPoint(Vec2(1.0f, 1.0f)); auto menu = Menu::create(pause, nullptr); menu->setPosition(0.0f, 0.0f); this->addChild(menu, 5); scoreLabel->setPosition(dockUp->getContentSize().width*0.5f + Global::getWinSizeX()*0.10f, dockUp->getContentSize().height*0.5f); lifeLabel->setPosition(dockUp->getContentSize().width*0.5f - Global::getWinSizeX()*0.3f, dockUp->getContentSize().height*0.5f); #endif return true; }
MenuItemImage* CustomTool::createMenuItemImage(const char* normal, const char* selected, ccMenuCallback callback) { auto item = MenuItemImage::create(); auto nsf = SpriteFrameCache::getInstance()->getSpriteFrameByName(normal); auto ssf = SpriteFrameCache::getInstance()->getSpriteFrameByName(selected); item->setNormalSpriteFrame(nsf); item->setSelectedSpriteFrame(ssf); item->setCallback(callback); return item; }
void CButton::setSelectedSpriteFrameName(const char* pSpriteName) { SpriteFrame *pFrame = SpriteFrameCache::getInstance()->getSpriteFrameByName(pSpriteName); #if COCOS2D_DEBUG > 0 char msg[256] = {0}; sprintf(msg, "Invalid spriteFrameName: %s", pSpriteName); CCAssert(pFrame != NULL, msg); #endif return setSelectedSpriteFrame(pFrame); }
MenuItemImage* createMenuItemImageWithSpriteFrame(const std::string& normalSpriteFrame, const std::string& selectedSpriteFrame, const std::string& disabledSpriteFrame, const ccMenuCallback& callback, Vec2 anchor, Vec2 pos){ auto item = MenuItemImage::create(); auto cache = CCSpriteFrameCache::getInstance(); item->setNormalSpriteFrame(cache->getSpriteFrameByName(normalSpriteFrame)); item->setSelectedSpriteFrame(cache->getSpriteFrameByName(selectedSpriteFrame)); item->setDisabledSpriteFrame(cache->getSpriteFrameByName(disabledSpriteFrame)); item->setCallback(callback); item->setAnchorPoint(anchor); item->setPosition(pos); item->setName(normalSpriteFrame); return item; }
bool MainmenuScene::init() { if(!Layer::init()) { return false; } SpriteFrameCache::getInstance()->addSpriteFramesWithFile("image/role.plist", "image/role.pvr.ccz"); SpriteFrameCache::getInstance()->addSpriteFramesWithFile("image/ui.plist", "image/ui.pvr.ccz"); auto background = Sprite::create("image/start-bg.jpg"); background->setPosition(VisibleRect::Center()); this->addChild(background); auto normal = SpriteFrameCache::getInstance()->getSpriteFrameByName("start1.png"); auto select = SpriteFrameCache::getInstance()->getSpriteFrameByName("start2.png"); auto item = MenuItemImage::create(); item->setNormalSpriteFrame(normal); item->setSelectedSpriteFrame(select); item->setCallback(CC_CALLBACK_1(MainmenuScene::onStart, this)); auto menu = Menu::createWithItem(item); this->addChild(menu); return true; }
bool WelcomeScene::init() { if (!Layer::init()) { return false; } auto visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); SpriteFrameCache::getInstance()->addSpriteFramesWithFile("image/all_pic.plist"); bgLayer = BgLayer::create(); bgLayer->removeChildByTag(BgLayer::TimeTag); bgLayer->removeChildByTag(BgLayer::ProgressTag); bgLayer->removeChildByTag(BgLayer::ProgressBgtag); this->addChild(bgLayer); menuLayer = MenuLayer::create(); this->addChild(menuLayer); // 标题 auto titleLabel = Label::createWithTTF("Meteorite Crisis", "fonts/Marker Felt.ttf", 60); titleLabel->setPosition(visibleSize.width / 2, visibleSize.height * 0.8); addChild(titleLabel); //menu play auto one_man = MenuItemImage::create(); auto normal1 = SpriteFrameCache::getInstance()->getSpriteFrameByName("one_man_normal.png"); auto selected1 = SpriteFrameCache::getInstance()->getSpriteFrameByName("one_man_clicked.png"); one_man->setNormalSpriteFrame(normal1); one_man->setSelectedSpriteFrame(selected1); one_man->setCallback([](Ref*){ auto s = GameScene::createScene(); float t = 0.5f; struct timeval psv; gettimeofday(&psv, NULL); unsigned rand_seed = (unsigned)(psv.tv_sec + psv.tv_usec); //转化为毫秒 srand(rand_seed); float choice = rand_0_1(); if (choice < 0.25) { Director::getInstance()->replaceScene(TransitionFlipY::create(t, s)); } else if (choice >= 0.25 && choice < 0.5) { Director::getInstance()->replaceScene(TransitionFlipY::create(t, s)); } else if (choice >= 0.5 && choice < 0.75) { Director::getInstance()->replaceScene(TransitionProgressRadialCCW::create(t, s)); } else if (choice >= 0.75 && choice < 1.0) { Director::getInstance()->replaceScene(TransitionProgressRadialCW::create(t, s)); } }); one_man->setScale(0.5f); //menu how to play auto howToPlay = MenuItemImage::create(); auto normal2 = SpriteFrameCache::getInstance()->getSpriteFrameByName("howtoplay_normal.png"); auto selected2 = SpriteFrameCache::getInstance()->getSpriteFrameByName("howtoplay_clicked.png"); howToPlay->setNormalSpriteFrame(normal2); howToPlay->setSelectedSpriteFrame(selected2); howToPlay->setCallback([&,this](Ref*){ auto s = HowToPlay::createScene(); float t = 0.5f; struct timeval psv; gettimeofday(&psv, NULL); unsigned rand_seed = (unsigned)(psv.tv_sec + psv.tv_usec); //转化为毫秒 srand(rand_seed); float choice = rand_0_1(); if (choice < 0.25) { Director::getInstance()->replaceScene(TransitionFlipY::create(t, s)); } else if (choice >= 0.25 && choice < 0.5) { Director::getInstance()->replaceScene(TransitionFlipY::create(t, s)); } else if (choice >= 0.5 && choice < 0.75) { Director::getInstance()->replaceScene(TransitionProgressRadialCCW::create(t, s)); } else if (choice >= 0.75 && choice < 1.0) { Director::getInstance()->replaceScene(TransitionProgressRadialCW::create(t, s)); } }); howToPlay->setScale(0.5f); howToPlay->setPositionY(- howToPlay->getContentSize().height/2 - 5); auto menu = Menu::create(one_man, howToPlay, NULL); menu->setPosition(visibleSize.width / 2, visibleSize.height * 0.5); menu->setAnchorPoint(Vec2(0.5,1)); addChild(menu); // 主角模型 auto player = Sprite::createWithSpriteFrameName("SpaceFlier4.png"); player->setScale(0.5); player->setPosition(visibleSize.width/2, visibleSize.height * 0.65); auto cache = SpriteFrameCache::getInstance(); Vector<SpriteFrame*> vec_sf; SpriteFrame* sf = NULL; for (int i = 1; i <= 5; ++i) { sf = cache->getSpriteFrameByName(StringUtils::format("SpaceFlier%d.png", i)); vec_sf.pushBack(sf); } Animation* animation = Animation::createWithSpriteFrames(vec_sf, 0.05f, -1); auto action = Animate::create(animation); player->runAction(CCRepeatForever::create( Sequence::create(action, action->reverse(), NULL))); addChild(player); // 最高分 // 最高分标题 auto highScoreTitle = Label::createWithTTF("BestScore:", "fonts/Marker Felt.ttf", 25); highScoreTitle->setPosition(visibleSize.width * 0.48, visibleSize.height * 0.2); this->addChild(highScoreTitle); // 最高分 auto bestScore = UserDefault::getInstance()->getIntegerForKey("highScore"); auto highScore = Label::createWithTTF( __String::createWithFormat("%i", bestScore)->getCString(), "fonts/Marker Felt.ttf", 25); highScore->setPosition(visibleSize.width * 0.6 , visibleSize.height * 0.2); this->addChild(highScore); return true; }
void CCMenuItemImage::setSelectedSpriteFrame(const char *fileName) { setSelectedSpriteFrame(createSpriteFrame(fileName)); }