MenuItem* GameOverLayer::displayGameCenterBtn() { auto spriteNormal = Sprite::create("base.png"); spriteNormal->setColor(Color3B(246, 222, 160)); auto spriteSelected = Sprite::create("base.png"); spriteSelected->setColor(Color3B(248, 224, 164)); auto spriteDisabled = Sprite::create("base.png"); spriteDisabled->setColor(Color3B::GRAY); auto btn = MenuItemSprite::create(spriteNormal, spriteSelected, spriteDisabled, CC_CALLBACK_1(GameOverLayer::onClickGameCenter, this) ); btn->setScale(3.6f, 1.8f); btn->setPosition(Vec2(170, -110)); btn->setOpacity(200); auto cupIcon = Label::createWithTTF(FC_ICON_BIG, FA_MGR->getContent(FAGamepad)); if (cupIcon) { cupIcon->setTextColor(Color4B::WHITE); cupIcon->enableOutline(Color4B::GRAY); cupIcon->setScaleX(1.0f / 3.6f); cupIcon->setScaleY(1.0f / 1.8f); auto size = btn->getContentSize(); cupIcon->setPosition(Vec2(size.width / 2, size.height / 2)); btn->addChild(cupIcon, 10); } return btn; }
/*------------------------------------------------------------------------------------ | 함 수 명 : initLabel(void) | 매개변수 : | 리 턴 값 : | 설 명 : 라벨 초기화 |------------------------------------------------------------------------------------*/ void OptionScene::initLabel() { auto labe_Music = Label::createWithTTF("", "fonts/hans punch.ttf", 25); // labe_Music->setAnchorPoint(Point(0, 1)); labe_Music->setPosition(Point(SizeW/2, SizeH - 200)); labe_Music->enableOutline(Color4B::GRAY, 1); labe_Music->setTag(TAG_OPTION_LABEL_MUSIC); this->addChild(labe_Music); auto label_Effect = Label::createWithTTF("", "fonts/hans punch.ttf", 25); // label_Effect->setAnchorPoint(Point(0, 1)); label_Effect->setPosition(Point(SizeW / 2, SizeH - 280)); label_Effect->enableOutline(Color4B::GRAY, 1); label_Effect->setTag(TAG_OPTION_LABEL_EFFECT); this->addChild(label_Effect); }
void MenuScene::display() { Size visibleSize = Director::getInstance()->getVisibleSize(); auto layer = LayerColor::create(Color4B::WHITE, visibleSize.width, visibleSize.height); this->addChild(layer); // logo auto logoLabel = Label::createWithTTF(FC_NUMBER_MIDDLE, "grubby worm"); if (logoLabel) { logoLabel->setTextColor(C4_LIGHT_GREEN); logoLabel->enableOutline(C4_DARK_GREEN); logoLabel->setAnchorPoint(Vec2(0.5, 1)); logoLabel->setPosition(Vec2(VisibleRect::center().x, VisibleRect::top().y - 95)); this->addChild(logoLabel, 10, logoTag); auto action = RotateTo::create(3, -2); auto action2 = RotateTo::create(6, 2); logoLabel->runAction(RepeatForever::create(Sequence::create(action, action2, nullptr))); } // buttons auto playBtn = displayPlayBtn(); auto gameCenterBtn = displayGameCenterBtn(); auto menu = Menu::create(playBtn, gameCenterBtn, nullptr); menu->setPosition(Vec2(VisibleRect::center().x, VisibleRect::center().y - 100)); this->addChild(menu, 10, menuTag); }
MenuItem* MenuScene::displayPlayBtn() { auto spriteNormal = Sprite::create("base.png"); spriteNormal->setColor(Color3B(170, 226, 246)); auto spriteSelected = Sprite::create("base.png"); spriteSelected->setColor(Color3B(182, 230, 246)); auto spriteDisabled = Sprite::create("base.png"); spriteDisabled->setColor(Color3B::GRAY); auto btn = MenuItemSprite::create(spriteNormal, spriteSelected, spriteDisabled, CC_CALLBACK_1(MenuScene::onClickPlay, this) ); btn->setScale(3.6f, 1.8f); btn->setPosition(Vec2(-170, 0)); btn->setOpacity(200); auto cupIcon = Label::createWithTTF(FC_ICON_BIG, FA_MGR->getContent(FAPlayCircle)); if (cupIcon) { cupIcon->setTextColor(Color4B::WHITE); cupIcon->enableOutline(Color4B::GRAY); cupIcon->setScaleX(1.0f / 3.6f); cupIcon->setScaleY(1.0f / 1.8f); auto size = btn->getContentSize(); cupIcon->setPosition(Vec2(size.width / 2, size.height / 2)); btn->addChild(cupIcon, 10); } return btn; }
void Text::copySpecialProperties(Widget *widget) { Text* label = dynamic_cast<Text*>(widget); if (label) { setFontName(label->_fontName); setFontSize(label->getFontSize()); setTextColor(label->getTextColor()); setString(label->getString()); setTouchScaleChangeEnabled(label->_touchScaleChangeEnabled); setTextHorizontalAlignment(label->_labelRenderer->getHorizontalAlignment()); setTextVerticalAlignment(label->_labelRenderer->getVerticalAlignment()); setTextAreaSize(label->_labelRenderer->getDimensions()); setContentSize(label->getContentSize()); LabelEffect effectType = label->getLabelEffectType(); if (effectType == LabelEffect::GLOW) { enableGlow(label->getEffectColor()); } else if (effectType == LabelEffect::OUTLINE) { enableOutline(label->getEffectColor(),label->getOutlineSize()); } if (label->isShadowEnabled()) { enableShadow(label->getShadowColor(),label->getShadowOffset(),label->getShadowBlurRadius()); } } }
void Label::setFontDefinition(const FontDefinition& textDefinition) { _systemFont = textDefinition._fontName; _systemFontSize = textDefinition._fontSize; _hAlignment = textDefinition._alignment; _vAlignment = textDefinition._vertAlignment; setDimensions(textDefinition._dimensions.width, textDefinition._dimensions.height); Color4B textColor = Color4B(textDefinition._fontFillColor); textColor.a = textDefinition._fontAlpha; setTextColor(textColor); #if (CC_TARGET_PLATFORM != CC_PLATFORM_ANDROID) && (CC_TARGET_PLATFORM != CC_PLATFORM_IOS) if (textDefinition._stroke._strokeEnabled) { CCLOGERROR("Currently only supported on iOS and Android!"); } _outlineSize = 0.f; #else if (textDefinition._stroke._strokeEnabled && textDefinition._stroke._strokeSize > 0.f) { Color4B outlineColor = Color4B(textDefinition._stroke._strokeColor); outlineColor.a = textDefinition._stroke._strokeAlpha; enableOutline(outlineColor, textDefinition._stroke._strokeSize); } #endif if (textDefinition._shadow._shadowEnabled) { enableShadow(Color4B(0, 0, 0, 255 * textDefinition._shadow._shadowOpacity), textDefinition._shadow._shadowOffset, textDefinition._shadow._shadowBlur); } }
void LabelTTF::setFontFile(const std::string& fontFile) { TTFConfig ttfConfig = getTTFConfig(); if ( FileUtils::getInstance()->isFileExist(fontFile) ) { TTFConfig newConfig(fontFile.c_str(),ttfConfig.fontSize,GlyphCollection::DYNAMIC); setTTFConfig(newConfig); enableOutline(Color4B::BLACK,2); } }
void LabelTTF::setFontSize(float fontSize) { TTFConfig ttfConfig = getTTFConfig(); if ( FileUtils::getInstance()->isFileExist(ttfConfig.fontFilePath) ) { TTFConfig newConfig(ttfConfig.fontFilePath.c_str(),fontSize,GlyphCollection::DYNAMIC); setTTFConfig(newConfig); enableOutline(Color4B::BLACK,2); } }
void Picking::displayUI() { eventHandler(); displayHP(); for (int i = 0; i < 4; i++) { m_glow[i] = Sprite::create("img/UI/battle/glow.png"); m_glow[i]->setScale(m_Mag*0.5); m_glow[i]->setPosition(Vec2(m_visibleSize.width / 8 * (((i + 1) * 1.5) + 1), m_cards[1]->getPositionY())); m_glow[i]->setZOrder(2); m_glow[i]->setTag(5); m_instance->addChild(m_glow[i]); } //instructions to reshuffle instructions = Label::createWithTTF("いらないカードをシャッフルしよう!", "fonts/ant-maru.ttf", 55); instructions->enableOutline(Color4B::BLACK, 2); instructions->setPosition(Vec2(m_visibleSize.width / 2, m_visibleSize.height /2.4)); m_instance->addChild(instructions); auto Label = Label::createWithTTF("<< Enemy Card", "fonts/arial.ttf", 25); Label->setColor(Color3B::RED); Label->enableOutline(Color4B::BLACK, 2); Label->setPosition(Vec2(m_enemyCard->getPosition().x * 0.9, m_enemyCard->getBoundingBox().getMaxY())); Label->setName("EnemyCard"); //m_instance->addChild(Label); MenuItemFont::setFontSize(80); MenuItemFont* goItem = MenuItemFont::create("Go!", CC_CALLBACK_1(Picking::startBattle, this)); auto label = Label::createWithTTF("GO!", "fonts/ant-maru.ttf", 60); label->enableOutline(Color4B::RED, 2); goItem->setLabel(label); goItem->setPosition(Vec2(m_visibleSize.width / 1.15, m_visibleSize.height / 2)); m_menu = Menu::create(goItem, NULL); m_menu->setPosition(Point::ZERO); m_instance->addChild(m_menu); }
void OptionLayer::addOption() { this->setDJ(DiscJockey::getInstance()); Node *optionNode = CSLoader::createNode("optionNode.csb");//传入Studio2.x的资源路径 optionNode->setPosition(Point(originPoint.x + visibleSize.width / 2, (originPoint.y + visibleSize.height / 2))); this->addChild(optionNode); optionNode->setName("optionNode"); this->setAnchorPoint(Point(0.5, 0.5)); this->ignoreAnchorPointForPosition(false); this->setPosition(Point(originPoint.x + visibleSize.width / 2, -(originPoint.y + visibleSize.height / 2))); auto eventListener = EventListenerTouchOneByOne::create(); eventListener->setSwallowTouches(true); eventListener->onTouchBegan = CC_CALLBACK_2(OptionLayer::onTouchBegan, this); eventListener->onTouchCancelled = CC_CALLBACK_2(OptionLayer::onTouchCancelled, this); eventListener->onTouchEnded = CC_CALLBACK_2(OptionLayer::onTouchEnded, this); Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(eventListener, this); auto cancelButton = dynamic_cast<ui::Button*> (optionNode->getChildByName("cancelButton")); if (cancelButton) { cancelButton->addClickEventListener(CC_CALLBACK_1(OptionLayer::cancel, this)); } //set font name again due to the cocos studio 2.0 bugs (Text load ttf error) for (auto node : optionNode->getChildren()) { auto textNode = dynamic_cast<ui::Text*>(node); if (textNode) { textNode->enableOutline(Color4B(25, 26, 25, 155), 2); } } auto musicBox = dynamic_cast<ui::CheckBox*>(optionNode->getChildByName("soundCheck")); musicBox->addEventListenerCheckBox(this, checkboxselectedeventselector(OptionLayer::musicCheckBoxCallback)); auto effectBox = dynamic_cast<ui::CheckBox*>(optionNode->getChildByName("effectCheck")); effectBox->addEventListenerCheckBox(this, checkboxselectedeventselector(OptionLayer::effectCheckBoxCallback)); musicBox->setSelectedState(getDJ()->isMusicOn()); effectBox->setSelectedState(getDJ()->isEffectOn()); int curSpeed = CommandCenter::getInstance()->getSpeedLevel(); auto textNode = dynamic_cast<ui::Text*>(optionNode->getChildByName("textCurSpeed")); textNode->setText(String::createWithFormat("%d", curSpeed)->getCString()); auto speedSlider = dynamic_cast<ui::Slider*>(optionNode->getChildByName("speedSlider")); speedSlider->addEventListenerSlider(this, sliderpercentchangedselector(OptionLayer::speedSliderCallback)); speedSlider->setPercent(curSpeed * 10); }
/*------------------------------------------------------------------------------------ | 함 수 명 : initMenu(void) | 매개변수 : | 리 턴 값 : | 설 명 : 메뉴 초기화 |------------------------------------------------------------------------------------*/ void OptionScene::initMenu() { // 데이터 정렬 메뉴 auto label_Music = Label::createWithTTF("배경음악", "fonts/hans punch.ttf", 30); // label_Time->enableShadow(Color4B::YELLOW, Size(2, -2)); label_Music->enableOutline(Color4B::GRAY, 1); label_Music->setColor(Color3B(255, 255, 0)); auto menu_Music = MenuItemLabel::create(label_Music, CC_CALLBACK_1(OptionScene::menuCallback, this)); menu_Music->setTag(TAG_OPTION_MENU_MUSIC); auto label_Effect = Label::createWithTTF("효과음", "fonts/hans punch.ttf", 30); label_Effect->enableOutline(Color4B::GRAY, 1); label_Effect->setColor(Color3B(255, 255, 0)); auto menu_Effect = MenuItemLabel::create(label_Effect, CC_CALLBACK_1(OptionScene::menuCallback, this)); menu_Effect->setTag(TAG_OPTION_MENU_EFFECT); auto label_Delete = Label::createWithTTF("순위 데이터 삭제", "fonts/hans punch.ttf", 30); label_Delete->enableOutline(Color4B::GRAY, 1); label_Delete->setColor(Color3B(255, 255, 0)); auto menu_Delete = MenuItemLabel::create(label_Delete, CC_CALLBACK_1(OptionScene::menuCallback, this)); menu_Delete->setTag(TAG_OPTION_MENU_DELETE); auto menu = Menu::create(menu_Music, menu_Effect, menu_Delete, NULL); menu->alignItemsVertically(); menu->setPositionY(SizeH-250); this->addChild(menu); // 좌우 이동 메뉴 아이템 셋팅 auto menu_Back = MenuItemImage::create("menu/Back_0.png", "menu/Back_1.png", CC_CALLBACK_1(OptionScene::menuCallback, this)); menu_Back->setTag(TAG_DATA_MENU_BACK); menu_Back->setScale(0.1f); auto menu2 = Menu::create(menu_Back, NULL); menu2->setAnchorPoint(Point(1, 0)); menu2->setPosition(Point(50, 50)); this->addChild(menu2); }
void GameOverLayer::displayScore(Node* parent) { // score auto scoreTitle = Label::createWithTTF(FC_NUMBER_SMALL, "score"); if (scoreTitle) { scoreTitle->setTextColor(C4_LIGHT_GREEN); scoreTitle->enableOutline(C4_DARK_GREEN); scoreTitle->setPosition(Vec2(160, 250)); parent->addChild(scoreTitle); } char score[10]; sprintf(score, "%d", GAME_MGR->getPlayerScore()); auto scoreLabel = Label::createWithTTF(FC_NUMBER_NORMAL, score); if (scoreLabel) { scoreLabel->setTextColor(Color4B::YELLOW); scoreLabel->enableOutline(Color4B::ORANGE); scoreLabel->setPosition(Vec2(160, 170)); parent->addChild(scoreLabel); } // best score auto bestScoreTitle = Label::createWithTTF(FC_NUMBER_SMALL, "best"); if (bestScoreTitle) { bestScoreTitle->setTextColor(C4_LIGHT_GREEN); bestScoreTitle->enableOutline(C4_DARK_GREEN); bestScoreTitle->setPosition(Vec2(490, 250)); parent->addChild(bestScoreTitle); } char bestScore[10]; sprintf(bestScore, "%d", GAME_MGR->getBestScore()); auto bestScoreLabel = Label::createWithTTF(FC_NUMBER_NORMAL, bestScore); if (bestScoreLabel) { bestScoreLabel->setTextColor(Color4B::YELLOW); bestScoreLabel->enableOutline(Color4B::ORANGE); bestScoreLabel->setPosition(Vec2(490, 170)); parent->addChild(bestScoreLabel); } }
bool HelpScene::init() { if (!Layer::init()) { return false; } auto size = Director::getInstance()->getWinSize(); auto visible = Director::getInstance()->getVisibleSize(); auto origin = Director::getInstance()->getVisibleOrigin(); //ÉèÖñ³¾° auto spriteBK = Sprite::create("background.png"); spriteBK->setPosition(size.width / 2, size.height / 2); spriteBK->setOpacity(75); this->addChild(spriteBK, 0); //¶ÁÈ¡xml×Ö·û CCDictionary* message = CCDictionary::createWithContentsOfFile("chinese.xml"); auto helpTitleKey = message->valueForKey("helpTitle"); const char* helpTitle = helpTitleKey->getCString(); //°ïÖúÐÅÏ¢ auto helpTitleLabel = Label::createWithTTF(helpTitle, "fonts/newSongTi.ttf", 25); helpTitleLabel->setPosition(Point( size.width - helpTitleLabel->getContentSize().width, size.height - helpTitleLabel->getContentSize().height)); this->addChild(helpTitleLabel, 1); auto helpMessageKey = message->valueForKey("helpMessage"); const char* helpMessage = helpMessageKey->getCString(); auto helpMessageLabel = Label::createWithTTF(helpMessage, "fonts/newSongTi.ttf",20); helpMessageLabel->setDimensions(300,200); helpMessageLabel->enableOutline(Color4B(255, 0, 0, 0), 1); //helpMessageLabel->setAnchorPoint(Point(1,1)); /*helpMessageLabel->setPosition(Point( size.width - helpTitleLabel->getContentSize().width, size.height - (helpTitleLabel->getContentSize().height*2)));*/ helpMessageLabel->setPosition(size.width / 2, size.height / 2); this->addChild(helpMessageLabel, 1); //·µ»Ø°´Å¥ auto menuItemBack = MenuItemFont::create("Back", CC_CALLBACK_1(HelpScene::gotoMenuCallback, this)); auto menu = Menu::create(menuItemBack, NULL); menu->setPosition(Point::ZERO); menuItemBack->setPosition(Point( size.width - menuItemBack->getContentSize().width, menuItemBack->getContentSize().height)); this->addChild(menu, 2); return true; }
bool LabelTest::init() { BackLayer::init(); Size visibleSize = Director::getInstance()->getVisibleSize(); //auto num = Director::getInstance()->getOpenGLView()->getReferenceCount(); //log("reference count:%d", num); auto layer = LayerColor::create(Color4B::GRAY); addChild(layer); //LabelBMFont的创建 auto labelBMFont = Label::createWithBMFont("bitmapFontTest.fnt", "A bit map font Label"); labelBMFont->setPosition(Vec2(visibleSize.width / 2, visibleSize.height - 100)); layer->addChild(labelBMFont); //LabelTTF的创建 //方法1:直接通过.ttf文件创建 auto labelTTF1 = Label::createWithTTF("A TTF Label", "fonts/Marker Felt.ttf", 24); labelTTF1->setPosition(Vec2(visibleSize.width / 2, visibleSize.height - 200)); layer->addChild(labelTTF1); //方法2:通过TTFConfig创建 TTFConfig labelConfig; labelConfig.fontFilePath = "fonts/Marker Felt.ttf"; labelConfig.fontSize = 24; auto labelTTF2 = Label::createWithTTF(labelConfig, "A TTF Label from TTFConfig"); labelTTF2->setPosition(Vec2(visibleSize.width / 2, visibleSize.height - 300)); layer->addChild(labelTTF2); //LabelSystemFont的创建 auto labelSystemFont = Label::createWithSystemFont("A SystemFont Label", "Arial", 36); labelSystemFont->setPosition(Vec2(visibleSize.width / 2, visibleSize.height - 400)); layer->addChild(labelSystemFont); //为字体加特效 auto labelTTFEffect = Label::createWithTTF("A TTF Label with effect", "fonts/Marker Felt.ttf", 36); labelTTFEffect->setPosition(Vec2(visibleSize.width / 2, visibleSize.height - 500)); labelTTFEffect->enableShadow(); labelTTFEffect->enableOutline(Color4B::BLACK, 3); layer->addChild(labelTTFEffect); return true; }
bool LabelTTF::initWithString(const std::string& string, const std::string& fontFile, float fontSize, const cocos2d::Size &dimensions, TextHAlignment hAlignment, TextVAlignment vAlignment) { if ( FileUtils::getInstance()->isFileExist(fontFile) ) { TTFConfig ttfConfig(fontFile.c_str(),fontSize,GlyphCollection::DYNAMIC); if (setTTFConfig(ttfConfig)) { setDimensions(dimensions.width,dimensions.height); setString(string); setAlignment(hAlignment,vAlignment); enableOutline(Color4B::BLACK,2); return true; } } return false; }
bool UIButtonTitleEffectTest::init() { if (UIScene::init()) { Size widgetSize = _widget->getContentSize(); // Add a label in which the button events will be displayed _displayValueLabel = Text::create("Button Title Effect", "fonts/Marker Felt.ttf",32); _displayValueLabel->setAnchorPoint(Vec2(0.5f, -1.0f)); _displayValueLabel->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f + 20)); _uiLayer->addChild(_displayValueLabel); // Create the button auto button = Button::create("cocosui/animationbuttonnormal.png", "cocosui/animationbuttonpressed.png"); button->setNormalizedPosition(Vec2(0.3f, 0.5f)); button->setTitleText("PLAY GAME"); button->setTitleFontName("fonts/Marker Felt.ttf"); button->setZoomScale(0.3f); button->setScale(2.0f); button->setPressedActionEnabled(true); Label *title = button->getTitleRenderer(); button->setTitleColor(Color3B::RED); title->enableShadow(Color4B::BLACK,Size(2,-2)); _uiLayer->addChild(button); // Create the button auto button2 = Button::create("cocosui/animationbuttonnormal.png", "cocosui/animationbuttonpressed.png"); button2->setNormalizedPosition(Vec2(0.8f, 0.5f)); button2->setTitleText("PLAY GAME"); auto title2 = button2->getTitleRenderer(); title2->enableOutline(Color4B::GREEN, 3); _uiLayer->addChild(button2); return true; } return false; }
void Label::setLabelEffect(LabelEffect effect,const Color3B& effectColor) { switch (effect) { case cocos2d::LabelEffect::NORMAL: disableEffect(); break; case cocos2d::LabelEffect::OUTLINE: enableOutline(Color4B(effectColor)); break; case cocos2d::LabelEffect::SHADOW: enableShadow(Color4B(effectColor)); break; case cocos2d::LabelEffect::GLOW: enableGlow(Color4B(effectColor)); break; default: break; } }
void GameOverLayer::displayContent() { // effect node auto root = Node::create(); this->addChild(root, 0, rootNodeTag); if (root) { root->setPosition(Vec2(100, -400)); root->setRotation(-30); auto move = MoveTo::create(0.5f, Vec2::ZERO); auto rotate = RotateTo::create(0.5f, 0); auto easeRotate = EaseBackOut::create(rotate); root->runAction(move); root->runAction(easeRotate); } // content auto size = Size(660, 380); auto contentLayer = LayerColor::create(Color4B::WHITE, size.width, size.height); contentLayer->setPosition(Vec2(VisibleRect::center().x - size.width / 2, VisibleRect::center().y - size.height / 2)); root->addChild(contentLayer, 1); displayScore(contentLayer); // title auto titleLabel = Label::createWithTTF(FC_NUMBER_TITLE, "game over"); if (titleLabel) { titleLabel->setTextColor(C4_LIGHT_GREEN); titleLabel->enableOutline(C4_DARK_GREEN); titleLabel->setAnchorPoint(Vec2(0.5, 1)); titleLabel->setPosition(VisibleRect::center() - contentLayer->getPosition() + Vec2(0, 190)); contentLayer->addChild(titleLabel); } auto restartBtn = displayRestartBtn(); auto gameCenterBtn = displayGameCenterBtn(); auto menu = Menu::create(restartBtn, gameCenterBtn, nullptr); menu->setPosition(VisibleRect::center() - contentLayer->getPosition()); contentLayer->addChild(menu); }
bool GameOver::init() { if ( !Layer::init() ) { return false; } director = Director::getInstance(); visibleSize = director->getVisibleSize(); Vec2 origin = director->getVisibleOrigin(); auto pauseItem = MenuItemImage::create( "play.png", "play_pressed.png", CC_CALLBACK_1(GameOver::exitPause, this)); pauseItem->setPosition(Vec2(origin.x + visibleSize.width - pauseItem->getContentSize().width / 2, origin.y + pauseItem->getContentSize().height / 2)); auto menu = Menu::create(pauseItem, NULL); menu->setPosition(Vec2::ZERO); this->addChild(menu, 1); auto bg = Sprite::create("background.png"); bg->setAnchorPoint(Vec2()); bg->setPosition(0,0); this->addChild(bg, -1); auto label = Label::createWithTTF("Game Over", "fonts/Marker Felt.ttf", 96); label->enableOutline(Color4B(255, 0, 0, 100),6); label->enableGlow(Color4B(255, 0, 0, 255)); label->enableShadow(); label->setPosition(origin.x + visibleSize.width/2, origin.y + visibleSize.height /2); this->addChild(label, 1); auto label2 = Label::createWithSystemFont("Your score is", "Arial", 48); label2->setPosition(origin.x + visibleSize.width/2,origin.y + visibleSize.height /2.5); this->addChild(label2, 1); char scoreText[32]; int score = UserDefault::getInstance()->getIntegerForKey("score",0); sprintf(scoreText, "%d", score); auto label3 = Label::createWithBMFont("font.fnt", scoreText); label3->setPosition(origin.x + visibleSize.width/2,origin.y + visibleSize.height /3.5); this->addChild(label3, 1); return true; }
// on "init" you need to initialize your instance bool HelloWorld::init() { if ( !Layer::init() ) { return false; } auto size = Director::getInstance()->getWinSize(); auto layer = LayerColor::create(Color4B::GRAY); this->addChild(layer); auto label = Label::createWithTTF("Shadow", "fonts/Marker Felt.ttf", 40); label->setPosition(Vec2(size.width/2, size.height/3*2)); this->addChild(label); label->enableShadow(Color4B::RED, Size(5,5), 0); auto label2 = Label::createWithTTF("Shadow & Outline", "fonts/Marker Felt.ttf", 40); label2->setPosition(Vec2(size.width/2, size.height/3)); this->addChild(label2); label2->enableShadow(Color4B::RED, Size(10,-10), 0); label2->enableOutline(Color4B::BLACK, 5); /* TTFConfig config; config.fontFilePath = "fonts/Marker Felt.ttf"; config.fontSize = 40.0f; config.glyphs = GlyphCollection::DYNAMIC; config.outlineSize = 1; config.customGlyphs = nullptr; config.distanceFieldEnabled = false; auto label = Label::createWithTTF(config, "True Type Font"); label->setPosition(size/2); this->addChild(label); label->setColor(Color3B::RED); */ /* sec = 0; std::string secString = StringUtils::toString(sec); auto label = Label::createWithSystemFont(secString, "Arial", 40); label->setPosition(size/2); this->addChild(label); this->schedule([=](float dt) { sec++; std::string secString = StringUtils::toString(sec); label->setString(secString); }, 1.0f, "myCallbackKey"); */ /* auto sprite = Sprite::create("res/run_01.png"); sprite->setPosition(size/2); this->addChild(sprite); sprite->setScale(0.2f); auto cache = AnimationCache::getInstance(); cache->addAnimationsWithFile("res/run_animation.plist"); auto animation = cache->getAnimation("run"); auto action = Animate::create(animation); sprite->runAction(action); */ /* auto sprite = Sprite::create("res/run_01.png"); sprite->setPosition(Vec2(size.width/2, size.height)); sprite->setAnchorPoint(Vec2(0.5f, 0.0f)); this->addChild(sprite); sprite->setScale(0.2f); auto drop = MoveTo::create(3.0f, Vec2(size.width/2, 0)); auto ease = EaseOut::create(drop, 10.1f); sprite->runAction(ease); */ //auto origin = Director::getInstance()->getVisibleOrigin(); /* { auto sprite = Sprite::create("res/run_01.png"); sprite->setPosition(Vec2(300, 200)); this->addChild(sprite); sprite->setScale(0.2f); } { auto sprite = Sprite::create("res/run_01.png"); sprite->setPosition(Vec2(400, 200)); this->addChild(sprite); sprite->setScale(0.2f); sprite->setColor(Color3B(255,0,0)); } int i = 100; std::string int_string = StringUtils::toString(i); float j = 123.4f; std::string float_string = StringUtils::toString(j); CCLOG("i=%s, j=%s", int_string.c_str(), float_string.c_str()); */ /* { auto sprite = Sprite::create("res/run_01.png"); sprite->setPosition(Vec2(500, 200)); this->addChild(sprite); sprite->setScale(0.2f); sprite->setScaleY(0.2f*0.5f); } { auto sprite = Sprite::create("res/run_01.png"); sprite->setPosition(Vec2(650, 200)); this->addChild(sprite); sprite->setScale(0.2f); sprite->setScale(0.2f*2.0f, 0.2f*0.5f); } */ /* auto delay = DelayTime::create(2.0f); auto move = MoveBy::create(2.0f, Vec2(100, 0)); auto rotate = RotateBy::create(2.0f, 360.0f); auto fade = FadeOut::create(2.0f); auto spawn = Spawn::create(rotate, fade, nullptr); auto action = Sequence::create(move, spawn, nullptr); //auto action = Sequence::create(sequence, sequence->reverse(), nullptr); //auto action = RepeatForever::create(rotate); sprite->runAction(action); */ /*auto func = CallFunc::create([](){ CCLOG("finished actions"); });*/ //auto func = CallFunc::create(CC_CALLBACK_0(HelloWorld::finishedAction, this)); /*auto func = CallFuncN::create([=](Ref* sender){ CCLOG("callback"); Sprite* sprite = dynamic_cast<Sprite*>(sender); sprite->runAction(move->reverse()); }); auto action = Sequence::create(move, rotate, func, nullptr); sprite->runAction(action); */ // texture atlas /* auto cache = SpriteFrameCache::getInstance(); cache->addSpriteFramesWithFile("res/running.plist"); auto sprite = Sprite::createWithSpriteFrameName("run_01.png"); sprite->setPosition(size/2); sprite->setScale(0.2f); this->addChild(sprite); */ // batch node /*auto batchNode = SpriteBatchNode::create("res/run_01.png"); this->addChild(batchNode); for (int i=0; i<300; i++) { auto sprite = Sprite::createWithTexture(batchNode->getTexture()); sprite->setScale(0.2f); float x = CCRANDOM_0_1() * size.width; float y = CCRANDOM_0_1() * size.height; sprite->setPosition(Vec2(x,y)); batchNode->addChild(sprite); } */ //sprite->setColor(Color3B(255, 0, 0)); /* Rect rect = sprite->getBoundingBox(); Size contentSize = sprite->getContentSize(); CCLOG("rect size=%f,%f, content size=%f,%f", rect.size.width, rect.size.height, contentSize.width, contentSize.height); */ /* auto sprite3d = Sprite3D::create("res/girl.c3b"); sprite3d->setPosition(Vec2(size.width/2, 100)); this->addChild(sprite3d); auto animation3d = Animation3D::create("res/girl.c3b"); auto animate3d = Animate3D::create(animation3d); auto repeat = RepeatForever::create(animate3d); sprite3d->runAction(repeat); sprite3d->setPositionX(size.width); auto move1 = MoveBy::create(5.0f, Vec2(-size.width, 0)); auto move2 = MoveBy::create(5.0f, Vec2(size.width, 0)); auto seq = Sequence::create(move1, move2, NULL); auto loop = RepeatForever::create(seq); sprite3d->runAction(loop); */ /*{ auto rect = Rect::ZERO; rect.size = sprite->getContentSize(); Vector<AnimationFrame*> frames; // animation for (int i=1; i<=8; i++) { std::string name = StringUtils::format("res/run_%02d.png", i); auto frame = SpriteFrame::create(name.c_str(), rect); ValueMap info; auto animationFrame = AnimationFrame::create(frame, i, info); frames.pushBack(animationFrame); } auto animation = Animation::create(frames, 0.1f); animation->setDelayPerUnit(0.1f); animation->setRestoreOriginalFrame(true); animation->setLoops(-1); auto action = Animate::create(animation); sprite->runAction(action); }*/ /*{ // animation auto animation = Animation::create(); for (int i=1; i<=8; i++) { std::string name = StringUtils::format("res/run_%02d.png", i); animation->addSpriteFrameWithFile(name.c_str()); } animation->setDelayPerUnit(0.1f); animation->setRestoreOriginalFrame(true); animation->setLoops(-1); auto action = Animate::create(animation); sprite->runAction(action); }*/ // drawing a shape /* static const Color4F WHITE; static const Color4F YELLOW; static const Color4F BLUE; static const Color4F GREEN; static const Color4F RED; static const Color4F MAGENTA; static const Color4F BLACK; static const Color4F ORANGE; static const Color4F GRAY; */ /* auto size = Director::getInstance()->getWinSize(); auto origin = Director::getInstance()->getVisibleOrigin(); auto draw = DrawNode::create(); this->addChild(draw); //draw->drawDot(Vec2(size/2), 10.0f, Color4F::WHITE); */ //draw->drawLine(Vec2(300, 200), Vec2(600, 200), Color4F::WHITE); //draw->drawSegment(Vec2(300, 100), Vec2(600, 100), 10.0f, Color4F::WHITE); // drawing circles //draw->drawCircle(Vec2(300, size.height/2), 50.0f, 1.0f, 10, true, 1.0f, 1.0f, Color4F::WHITE); //draw->drawCircle(Vec2(450, size.height/2), 50.0f, 1.0f, 100, false, 1.0f, 1.0f, Color4F::WHITE); //draw->drawSolidCircle(Vec2(600, size.height/2), 50.0f, 1.0f, 100, 1.0f, 1.0f, Color4F::WHITE); // drawing rects //draw->drawRect(Vec2(240, 100), Vec2(340,200), Color4F::WHITE); //draw->drawSolidRect(Vec2(480, 100), Vec2(580, 200), Color4F::WHITE); // drawing triangle //draw->drawTriangle(Vec2(380,100), Vec2(480, 200), Vec2(580, 100), Color4F::WHITE); // Bezier curve // 第4引き数の数値 segment はカーブの滑らかさ //draw->drawQuadBezier(Vec2(240, 200), Vec2(480, 320), Vec2(720, 200), 24, Color4F::WHITE); //draw->drawCubicBezier(Vec2(240, 100), Vec2(240, 200), Vec2(720, 200), Vec2(720, 100), 24, Color4F::WHITE); // draw a polygon /* std::vector<Vec2>verts; verts.push_back(Vec2(380,100)); verts.push_back(Vec2(380,200)); verts.push_back(Vec2(480,250)); verts.push_back(Vec2(580,200)); verts.push_back(Vec2(580,100)); verts.push_back(Vec2(480,50)); draw->drawPolygon(&verts[0], verts.size(), Color4F::RED, 5.0f, Color4F::GREEN); */ /* { auto points = PointArray::create(10); draw->drawCatmullRom(points, 10, Color4F::ORANGE); } */ /* { _points = new PointArray(); _points->initWithCapacity(10000); //_points->addControlPoint(Vec2(0,size.height/2)); //_points->addControlPoint(Vec2(size.width/2,size.height)); //_points->addControlPoint(Vec2(size.width,size.height/2)); //draw->drawCardinalSpline(_points, 10.0f, 100, Color4F::ORANGE); _draw = draw; auto listener = EventListenerTouchOneByOne::create(); listener->onTouchBegan = [](Touch* touch, Event* event){ return true; }; listener->onTouchMoved = [&](Touch* touch, Event* event){ //if (_points->count()>=1000) { // return; //} _points->addControlPoint(touch->getLocation()); //if (_points->count()>3) { // _draw->drawCatmullRom(_points, 100, Color4F::RED); _draw->drawCardinalSpline(_points, 10.0f, 100, Color4F::ORANGE); //} }; this->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, this); } */ return true; }
Scene* Chapter6_1::createScene() { cocos2d::Rect visibleRect = Director::getInstance()->getOpenGLView()->getVisibleRect(); Size visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); int index=2; // create a scene auto scene = Scene::create(); auto layer = LayerColor::create(Color4B::GRAY); scene->addChild(layer); // add title auto label = LabelTTF::create("Label", "Marker Felt.ttf", 32); label->setPosition(Vec2(visibleRect.origin.x+visibleRect.size.width/2, visibleRect.origin.y+visibleRect.size.height/2).x, Vec2(visibleRect.origin.x+visibleRect.size.width/2, visibleRect.origin.y+visibleRect.size.height).y - 30); scene->addChild(label, -1); //add the menu item for back to main menu label = LabelTTF::create("MainMenu", "Marker Felt.ttf", 32); auto menuItem = MenuItemLabel::create(label); menuItem->setCallback([&](cocos2d::Ref *sender) { Director::getInstance()->replaceScene(Chapter6::createScene()); }); auto menu = Menu::create(menuItem, nullptr); menu->setPosition(Vec2::ZERO); menuItem->setPosition(Vec2(visibleRect.origin.x+visibleRect.size.width - 80, visibleRect.origin.y + 25)); scene->addChild(menu, 1); // this is for Labels section of the Programmers Guide // 1. BMFont auto myLabel = Label::createWithBMFont("bitmapRed.fnt", "LabelBMFont"); myLabel->setPosition(Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height/2).x, (Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height).y - (++index) * 40)); scene->addChild(myLabel, 1); // 2. LabelTTF auto myLabel2 = Label::createWithTTF("LabelTTF", "Marker Felt.ttf", 32); myLabel2->setColor(Color3B::RED); myLabel2->setPosition(Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height/2).x, (Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height).y - (++index) * 40)); scene->addChild(myLabel2, 1); // 3. LabelTTF with TTFConfig // create a TTFConfig files for labels to share TTFConfig labelConfig; labelConfig.fontFilePath = "Marker Felt.ttf"; labelConfig.fontSize = 32; auto myLabel3 = Label::createWithTTF(labelConfig, "LabelTTF from TTFConfig"); myLabel3->setColor(Color3B::RED); myLabel3->setPosition(Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height/2).x, (Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height).y - (++index) * 40)); scene->addChild(myLabel3, 1); // 4. Label using SystemFont auto myLabel4 = Label::createWithSystemFont("Label using SystemFont", "Arial", 32); myLabel4->setColor(Color3B::RED); myLabel4->setPosition(Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height/2).x, (Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height).y - (++index) * 40)); scene->addChild(myLabel4, 1); // 5. LabelTTF with shadow, outline and glow auto myLabel5 = Label::createWithTTF("LabelTTF with Shadow", "Marker Felt.ttf", 32); myLabel5->enableShadow(); myLabel5->setColor(Color3B::RED); myLabel5->setPosition(Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height/2).x, (Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height).y - (++index) * 40)); scene->addChild(myLabel5, 1); auto myLabel6 = Label::createWithTTF("LabelTTF with Outline", "Marker Felt.ttf", 32); myLabel6->setTextColor(Color4B::RED); //setColor will change the color of the whole label with effects as if 3.4 // myLabel6->setColor(Color3B::RED); myLabel6->enableOutline(Color4B::WHITE, 1); myLabel6->setPosition(Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height/2).x, (Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height).y - (++index) * 40)); scene->addChild(myLabel6, 1); auto myLabel7 = Label::createWithTTF("LabelTTF with Glow", "Marker Felt.ttf", 32); myLabel7->enableGlow(Color4B::YELLOW); myLabel7->setTextColor(Color4B::RED); myLabel7->setPosition(Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height/2).x, (Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height).y - (++index) * 40)); scene->addChild(myLabel7, 1); // return the scene return scene; }
bool ResultLayer::init() { if(!Layer::init()){ return false; } auto winSize = Director::getInstance()->getWinSize(); // 結果画面の生成 auto resultBackground = Sprite::create("result_background.png"); auto backSize = resultBackground->getContentSize(); resultBackground->setPosition(Vec2(winSize.width / 2, winSize.height * 3 / 2)); this->setResultBackground(resultBackground); this->addChild(resultBackground, 1); // 結果画面の出現 auto delay = DelayTime::create(1.0); auto moveto = MoveTo::create(1.0, Vec2(winSize.width / 2, winSize.height / 2)); auto resultSequence = Sequence::create(delay, moveto, NULL); resultBackground->runAction(resultSequence); // スコアラベルの作成 auto scoreLabel = Label::createWithSystemFont("0", "Latha", 20); scoreLabel->enableShadow(Color4B::BLACK, Size(0.5, 0.5), 3); scoreLabel->enableOutline(Color4B::BLACK, 1.5); scoreLabel->setPosition(Vec2(backSize.width / 2, RESULT_SCORE_LABEL_POS_Y)); this->setResultScoreLabel(scoreLabel); resultBackground->addChild(scoreLabel); // パネル枚数ラベルの作成 auto panelsLabel = Label::createWithSystemFont("0", "Latha", 20); panelsLabel->enableShadow(Color4B::BLACK, Size(0.5, 0.5), 3); panelsLabel->enableOutline(Color4B::BLACK, 1.5); panelsLabel->setPosition(Vec2(RESULT_PANELS_LABEL_POS_X, RESULT_PANELS_LABEL_POS_Y)); this->setResultPanelsLabel(panelsLabel); resultBackground->addChild(panelsLabel); // maxコンボラベルの作成 auto maxComboLabel = Label::createWithSystemFont("0", "Latha", 20); maxComboLabel->enableShadow(Color4B::BLACK, Size(0.5, 0.5), 3); maxComboLabel->enableOutline(Color4B::BLACK, 1.5); maxComboLabel->setPosition(Vec2(RESULT_MAX_COMBO_LABEL_POS_X, RESULT_MAX_COMBO_LABEL_POS_Y)); this->setResultMaxComboLabel(maxComboLabel); resultBackground->addChild(maxComboLabel); //リプレイボタンの作成 auto replayButton = MenuItemImage::create("replay_button.png", "replay_button_pressed.png", [](Ref* ref){ auto scene = GameScene::createScene(); Director::getInstance()->replaceScene(scene); CocosDenshion::SimpleAudioEngine::getInstance()->playEffect("buttonpush.mp3"); }); // ホームボタンの作成 auto homeButton = MenuItemImage::create("home_button_result.png", "home_button_result_pressed.png", [](Ref* ref){ auto scene = StartScene::createScene(); auto transition = TransitionPageTurn::create(0.5, scene, true); Director::getInstance()->replaceScene(transition); CocosDenshion::SimpleAudioEngine::getInstance()->playEffect("buttonpush.mp3"); }); // ランキングボタンの作成 auto rankButton = MenuItemImage::create("rank_button_result.png", "rank_button_result_pressed.png", [](Ref* ref){ auto scene = StartScene::createScene(); auto layer = RankScene::create(); layer->setAtmain(false); scene->addChild(layer); auto transition = TransitionPageTurn::create(0.5, scene, true); Director::getInstance()->replaceScene(transition); CocosDenshion::SimpleAudioEngine::getInstance()->playEffect("buttonpush.mp3"); }); auto menu = Menu::create(homeButton, replayButton, rankButton, NULL); resultBackground->addChild(menu, 2); menu->setPosition(Vec2(backSize.width / 2, MENU_POS_Y)); menu->alignItemsHorizontallyWithPadding(MENU_INTERVAL); // ボタンを横に並べる return true; }
void LevelListScene::_build() { cocos2d::Vec2 visibleOrigin = cocos2d::Director::getInstance()->getVisibleOrigin(); cocos2d::Size visibleSize = cocos2d::Director::getInstance()->getVisibleSize(); //auto background = cocos2d::Sprite::create("background.png"); //background->setAnchorPoint(cocos2d::Vec2::ZERO); //background->setPosition(cocos2d::Vec2::ZERO); //background->setOpacity(0); //addChild(background); //background->runAction(cocos2d::FadeIn::create(0.5)); auto levelPack = _game->getLevelPack(_packIndex); const std::vector<LevelPackEntry>& entries = levelPack->getEntries(); cocos2d::Rect menuRect(visibleOrigin.x + 100, visibleOrigin.y + 100, visibleSize.width - 200, visibleSize.height - 140); cocos2d::Size cellSize(menuRect.size.width / 5, menuRect.size.height / 5); cocos2d::Vec2 point(0, menuRect.size.height - cellSize.height); bool prevLevelCompleted = true; for (size_t i = 0; i + _startLevelIndex < entries.size() && i < 25; i++) { int levelIndex =_startLevelIndex + i; auto& record = _game->getHighscores()->getRecord(_packIndex, levelIndex); bool canStart = prevLevelCompleted || record.tried; auto button = cocos2d::ui::Button::create(canStart ? "slide-north-0001.png" : "floor.png", "", "", cocos2d::ui::Widget::TextureResType::PLIST); button->setAnchorPoint(cocos2d::Vec2(0.5f, 0.5f)); button->setPosition(menuRect.origin + point + cocos2d::Vec2(cellSize) * 0.5f - cocos2d::Vec2(0, 100)); button->setScale(0); button->setEnabled(canStart); button->addTouchEventListener([this, levelIndex](cocos2d::Ref* sender, cocos2d::ui::Widget::TouchEventType type) { if (type == cocos2d::ui::Widget::TouchEventType::ENDED) { auto director = cocos2d::Director::getInstance(); director->pushScene(LevelScene::create(_game, _packIndex, _startLevelIndex + levelIndex)); } }); if (canStart) { auto buttonLabel = cocos2d::Label::createWithTTF(std::to_string(i + 1), "fonts/Marker Felt.ttf", 24); buttonLabel->setPosition(cocos2d::Vec2(button->getContentSize()) * 0.5f); buttonLabel->setAnchorPoint(cocos2d::Vec2(0.5f, 0.5f)); buttonLabel->enableOutline(cocos2d::Color4B::BLACK, 2); button->addChild(buttonLabel); } addChild(button); if (record.completed) { auto star = cocos2d::Sprite::createWithSpriteFrameName("ic-chip.png"); star->setPosition(cocos2d::Vec2(button->getContentSize().width - 10, 11)); button->addChild(star); } if (i % 5 != 4) { point.x += cellSize.width; } else { point.x = 0; point.y -= cellSize.height; } button->runAction(cocos2d::Sequence::create( cocos2d::DelayTime::create(0.01 * i), cocos2d::Spawn::create( cocos2d::EaseBounceIn::create(cocos2d::ScaleTo::create(0.25, 1)), cocos2d::MoveBy::create(0.25, cocos2d::Vec2(0, 100)), nullptr ), nullptr )); prevLevelCompleted = record.completed; } /*auto backButton = cocos2d::MenuItemSprite::create(cocos2d::Sprite::create("boots-ice.png"), nullptr, CC_CALLBACK_1(LevelsScene::_backCallback, this)); backButton->setPosition(cocos2d::Vec2(100, 60)); menu->addChild(backButton);*/ }
void WagonSelect::createUI() { auto bk = Sprite::create("wagonselect_bk.png"); if(g_visibleRect.visibleWidth>960) { bk->setScaleX(g_visibleRect.visibleWidth/960); } bk->setAnchorPoint(Point::ANCHOR_MIDDLE); bk->setPosition(g_visibleRect.center); this->addChild(bk); _wagon_bk = Sprite::create("wagon_bk.png"); if(g_visibleRect.visibleWidth>960) { _wagon_bk->setScaleX(g_visibleRect.visibleWidth/960); } _wagon_bk->setAnchorPoint(Point::ANCHOR_MIDDLE_LEFT); _wagon_bk->setPosition(Point(130,280)); this->addChild(_wagon_bk,1); //boy or girl _boy_memuitem = MenuItemImage::create("boy_0.png","boy_1.png", CC_CALLBACK_1(WagonSelect::boy_selected_callback, this)); _boy_memuitem->setAnchorPoint(Point::ANCHOR_MIDDLE); _boy_memuitem->setPosition(Point(60,g_visibleRect.visibleHeight/2+60)); _boy_memuitem->selected(); _girl_memuitem = MenuItemImage::create("girl_0.png","girl_1.png", CC_CALLBACK_1(WagonSelect::girl_selected_callback, this)); _girl_memuitem->setAnchorPoint(Point::ANCHOR_MIDDLE); _girl_memuitem->setPosition(Point(60,g_visibleRect.visibleHeight/2-60)); auto menu = Menu::create(_boy_memuitem, _girl_memuitem, nullptr); menu->setPosition(Point::ZERO); this->addChild(menu,1); // MenuItemImage* ready_menu; if (_turntype == FIRST_TURN) { ready_menu = MenuItemImage::create("btn_ready_1.png","btn_ready_2.png",CC_CALLBACK_1(WagonSelect::ready_callback, this)); } else if(_turntype == SECOND_TURN) { ready_menu = MenuItemImage::create("btn_start_1.png","btn_start_2.png",CC_CALLBACK_1(WagonSelect::ready_callback, this)); } ready_menu->setPosition(Point(g_visibleRect.visibleWidth-120, g_visibleRect.visibleHeight-60)); auto menu_ready = Menu::create(ready_menu, nullptr); menu_ready->setPosition(Point::ZERO); this->addChild(menu_ready,1); // _wagon1_menuitem = MenuItemImage::create("wagon_item_0.png","wagon_item_1.png", CC_CALLBACK_1(WagonSelect::wagon1_selected_callback, this)); _wagon1_menuitem->setAnchorPoint(Point::ANCHOR_MIDDLE); _wagon1_menuitem->setPosition(Point(120,g_visibleRect.visibleHeight/2-80)); _wagon1_menuitem->selected(); _wagon2_menuitem = MenuItemImage::create("wagon_item_0.png","wagon_item_1.png", CC_CALLBACK_1(WagonSelect::wagon2_selected_callback, this)); _wagon2_menuitem->setAnchorPoint(Point::ANCHOR_MIDDLE); _wagon2_menuitem->setPosition(Point(310,g_visibleRect.visibleHeight/2-80)); _wagon3_menuitem = MenuItemImage::create("wagon_item_0.png","wagon_item_1.png", CC_CALLBACK_1(WagonSelect::wagon3_selected_callback, this)); _wagon3_menuitem->setAnchorPoint(Point::ANCHOR_MIDDLE); _wagon3_menuitem->setPosition(Point(500,g_visibleRect.visibleHeight/2-80)); _wagon4_menuitem = MenuItemImage::create("wagon_item_0.png","wagon_item_1.png", CC_CALLBACK_1(WagonSelect::wagon4_selected_callback, this)); _wagon4_menuitem->setAnchorPoint(Point::ANCHOR_MIDDLE); _wagon4_menuitem->setPosition(Point(690,g_visibleRect.visibleHeight/2-80)); auto menu_wagon = Menu::create(_wagon1_menuitem, _wagon2_menuitem, _wagon3_menuitem, _wagon4_menuitem, nullptr); menu_wagon->setPosition(Point::ZERO); _wagon_bk->addChild(menu_wagon,1); // auto wagon1 = Sprite::createWithSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("cnm_idle01.png")); wagon1->runAction(RepeatForever::create(g_gameConfig.getAnimate(g_gameAnimation.cnm_idle))); wagon1->setAnchorPoint(Point::ANCHOR_MIDDLE); wagon1->setPosition(Point(120,g_visibleRect.visibleHeight/2-10)); wagon1->setScale(1.3f); _wagon_bk->addChild(wagon1, 2); auto wagon2 = Sprite::createWithSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("tankidle01.png")); wagon2->runAction(RepeatForever::create(g_gameConfig.getAnimate(g_gameAnimation.tank_idle))); wagon2->setAnchorPoint(Point::ANCHOR_MIDDLE); wagon2->setPosition(Point(310,g_visibleRect.visibleHeight/2-15)); wagon2->setScale(1.3f); _wagon_bk->addChild(wagon2, 3); auto wagon3 = Sprite::createWithSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("rockidle01.png")); wagon3->runAction(RepeatForever::create(g_gameConfig.getAnimate(g_gameAnimation.rock_idle))); wagon3->setAnchorPoint(Point::ANCHOR_MIDDLE); wagon3->setPosition(Point(500,g_visibleRect.visibleHeight/2)); wagon3->setScale(1.3f); _wagon_bk->addChild(wagon3, 3); auto wagon4_1 = Sprite::createWithSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("mechidle01.png")); wagon4_1->runAction(RepeatForever::create(g_gameConfig.getAnimate(g_gameAnimation.mech_idle))); wagon4_1->setAnchorPoint(Point::ANCHOR_MIDDLE); wagon4_1->setPosition(Point(700,g_visibleRect.visibleHeight/2-5)); wagon4_1->setScale(1.3f); _wagon_bk->addChild(wagon4_1, 2); auto wagon4_2 = Sprite::createWithSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("mechgunidle01.png")); wagon4_2->runAction(RepeatForever::create(g_gameConfig.getAnimate(g_gameAnimation.mechgun_idle))); wagon4_2->setAnchorPoint(Point::ANCHOR_MIDDLE); wagon4_2->setPosition(Point(700,g_visibleRect.visibleHeight/2-20)); wagon4_2->setScale(1.3f); _wagon_bk->addChild(wagon4_2, 3); //dude auto offsetPoint1 = Point(30.0f, 55.0f); _dude1 = Sprite::create("boy.png"); _dude1->setAnchorPoint(Point(Point::ANCHOR_MIDDLE)); _dude1->setPosition(wagon1->getPosition() + offsetPoint1); _dude1->setScale(1.3f); _wagon_bk->addChild(_dude1,2); auto offsetPoint2 = Point(20.0f, 65.0f); _dude2 = Sprite::create("boy.png"); _dude2->setAnchorPoint(Point(Point::ANCHOR_MIDDLE)); _dude2->setPosition(wagon2->getPosition() + offsetPoint2); _dude2->setScale(1.3f); _wagon_bk->addChild(_dude2,2); auto offsetPoint3 = Point(30.0f, 50.0f); _dude3 = Sprite::create("boy.png"); _dude3->setAnchorPoint(Point(Point::ANCHOR_MIDDLE)); _dude3->setPosition(wagon3->getPosition() + offsetPoint3); _dude3->setScale(1.3f); _wagon_bk->addChild(_dude3,2); auto offsetPoint4 = Point(10.0f, 55.0f); _dude4 = Sprite::create("boy.png"); _dude4->setAnchorPoint(Point(Point::ANCHOR_MIDDLE)); _dude4->setPosition(wagon4_1->getPosition() + offsetPoint4); _dude4->setScale(1.3f); _wagon_bk->addChild(_dude4,2); //shawdow auto shawdow1 = Sprite::create("shawdow.png"); shawdow1->setAnchorPoint(Point::ANCHOR_MIDDLE); shawdow1->setPosition(Point(120,g_visibleRect.visibleHeight/2-70)); shawdow1->setOpacity(200); _wagon_bk->addChild(shawdow1,2); auto shawdow2 = Sprite::create("shawdow.png"); shawdow2->setAnchorPoint(Point::ANCHOR_MIDDLE); shawdow2->setPosition(Point(310,g_visibleRect.visibleHeight/2-70)); shawdow2->setOpacity(200); _wagon_bk->addChild(shawdow2,2); auto shawdow3 = Sprite::create("shawdow.png"); shawdow3->setAnchorPoint(Point::ANCHOR_MIDDLE); shawdow3->setPosition(Point(500,g_visibleRect.visibleHeight/2-70)); shawdow3->setOpacity(200); _wagon_bk->addChild(shawdow3,2); auto shawdow4 = Sprite::create("shawdow.png"); shawdow4->setAnchorPoint(Point::ANCHOR_MIDDLE); shawdow4->setPosition(Point(690,g_visibleRect.visibleHeight/2-70)); shawdow4->setOpacity(200); _wagon_bk->addChild(shawdow4,2); // params initWagonParams(); // name TTFConfig horseyTTFConfig; horseyTTFConfig.outlineSize = 3; horseyTTFConfig.fontSize = 30; horseyTTFConfig.fontFilePath = "fonts/britanic bold.ttf"; auto horseyLabel = Label::createWithTTF(horseyTTFConfig, "HORSEY", TextHAlignment::CENTER, 20); horseyLabel->setPosition(120,g_visibleRect.visibleHeight/2-110); //horseyLabel->setSpacing(-5); horseyLabel->setAnchorPoint(Point::ANCHOR_MIDDLE); horseyLabel->enableOutline(Color4B::BLACK); _wagon_bk->addChild(horseyLabel,2); TTFConfig tankTTFConfig; tankTTFConfig.outlineSize = 3; tankTTFConfig.fontSize = 30; tankTTFConfig.fontFilePath = "fonts/britanic bold.ttf"; auto tankLabel = Label::createWithTTF(horseyTTFConfig, "TANK", TextHAlignment::CENTER, 20); tankLabel->setPosition(310,g_visibleRect.visibleHeight/2-110); //tankLabel->setSpacing(-5); tankLabel->setAnchorPoint(Point::ANCHOR_MIDDLE); tankLabel->enableOutline(Color4B::BLACK); _wagon_bk->addChild(tankLabel,2); TTFConfig rockTTFConfig; rockTTFConfig.outlineSize = 3; rockTTFConfig.fontSize = 30; rockTTFConfig.fontFilePath = "fonts/britanic bold.ttf"; auto rockLabel = Label::createWithTTF(horseyTTFConfig, "ROCK", TextHAlignment::CENTER, 20); rockLabel->setPosition(500,g_visibleRect.visibleHeight/2-110); //rockLabel->setSpacing(-5); rockLabel->setAnchorPoint(Point::ANCHOR_MIDDLE); rockLabel->enableOutline(Color4B::BLACK); _wagon_bk->addChild(rockLabel,2); TTFConfig mechTTFConfig; mechTTFConfig.outlineSize = 3; mechTTFConfig.fontSize = 30; mechTTFConfig.fontFilePath = "fonts/britanic bold.ttf"; auto mechLabel = Label::createWithTTF(horseyTTFConfig, "MECH", TextHAlignment::CENTER, 20); mechLabel->setPosition(690,g_visibleRect.visibleHeight/2-110); //mechLabel->setSpacing(-5); mechLabel->setAnchorPoint(Point::ANCHOR_MIDDLE); mechLabel->enableOutline(Color4B::BLACK); _wagon_bk->addChild(mechLabel,2); // flash flash = Sprite::create("wagon_flash.png"); flash->setAnchorPoint(Point::ANCHOR_MIDDLE); flash->setPosition(Point(120,g_visibleRect.visibleHeight/2-80)); flash->runAction(RepeatForever::create(Blink::create(1,1))); _wagon_bk->addChild(flash,3); auto returnMenuListener = EventListenerCustom::create("returntoMenu", CC_CALLBACK_0(WagonSelect::returntoMenu, this)); _eventDispatcher->addEventListenerWithSceneGraphPriority(returnMenuListener, this); auto wagonselectshowpopwindowlistener = EventListenerCustom::create("wagonselectshowpopwindowlistener", CC_CALLBACK_0(WagonSelect::showConnectingPopWindow, this)); _eventDispatcher->addEventListenerWithSceneGraphPriority(wagonselectshowpopwindowlistener, this); }
bool MainScene::init(){ if(!Layer::init()){ return false; } auto winSize = Director::getInstance()->getWinSize(); //TJA読み込み Tja tja = Tja(); tja.loadTja(); _noteTimes = tja.getNoteTimes(); auto background = Sprite::create("background.png"); background->setPosition(Vec2(winSize.width / 2.0, winSize.height / 2.0)); this->addChild(background); auto scoreLabel = Label::createWithSystemFont(StringUtils::toString(_score), "Marker Felt", FONT_SIZE); scoreLabel->enableShadow(Color4B::BLACK, Size(0.5, 0.5), 3); scoreLabel->enableOutline(Color4B::BLACK, 1.5); scoreLabel->setPosition(Vec2(winSize.width / 2 * 1.5, winSize.height - 40)); this->setScoreLabel(scoreLabel); this->addChild(scoreLabel); auto scoreLabelHeader = Label::createWithSystemFont("SCORE", "Marker Felt", FONT_SIZE); scoreLabelHeader->setPosition(Vec2(winSize.width / 2 * 1.5, winSize.height - 20)); this->addChild(scoreLabelHeader); int second = static_cast<int>(_second); auto secondLabel = Label::createWithSystemFont(StringUtils::toString(second), "Marker Felt", FONT_SIZE); secondLabel->setPosition(Vec2(winSize.width / 2, winSize.height - 40)); this->setSecondLabel(secondLabel); this->addChild(secondLabel); auto secondLabelHeader = Label::createWithSystemFont("TIME", "Marker Felt", FONT_SIZE); secondLabelHeader->setPosition(Vec2(winSize.width / 2, winSize.height - 20)); this->addChild(secondLabelHeader); //当たり判定 auto hitDetection = DrawNode::create(); hitDetection->drawDot(INIT_PLAYER_POSITION, 10.0f, Color4F(1.0f, 6.0f, 5.0f, 1.0f)); this->addChild(hitDetection); auto listener = EventListenerTouchOneByOne::create(); listener->onTouchBegan = [this](Touch *touch, Event *event){ this->setTouchLocation(touch->getLocation()); return true; }; listener->onTouchMoved = [this](Touch *touch, Event *event){ SwipeDirection swipeDirection = this->getSwipeDirection(touch); if(swipeDirection != SwipeDirection::NONE){ // if(swipeDirection == SwipeDirection::RIGHT){ // if(_isSwipeTimeRight <= 0){ // this->initSwipeTime(); // this->setIsSwipeTimeRight(SWIPE_WAIT_TIME); // //音 // CocosDenshion::SimpleAudioEngine::getInstance()->playEffect("dong.mp3"); // //エフェクト // auto explosion = ParticleFire::create(); // explosion->setPosition(INIT_PLAYER_POSITION); // explosion->setDuration(0.0001); // this->addChild(explosion); // explosion->setAutoRemoveOnFinish(true); // 表示が終わったら自分を親から削除! // } // } // else if(swipeDirection == SwipeDirection::LEFT){ // if(_isSwipeTimeLeft <= 0){ // this->initSwipeTime(); // this->setIsSwipeTimeLeft(SWIPE_WAIT_TIME); // //音 // CocosDenshion::SimpleAudioEngine::getInstance()->playEffect("dong.mp3"); // //エフェクト // auto explosion = ParticleFire::create(); // explosion->setPosition(INIT_PLAYER_POSITION); // explosion->setDuration(0.0001); // explosion->setAutoRemoveOnFinish(true); // 表示が終わったら自分を親から削除! // this->addChild(explosion); // } // } if(swipeDirection == SwipeDirection::UP){ if(_isSwipeTimeUp <= 0){ this->initSwipeTime(); this->setIsSwipeTimeUp(SWIPE_WAIT_TIME); //音 CocosDenshion::SimpleAudioEngine::getInstance()->playEffect("dong.mp3"); //エフェクト auto explosion = ParticleFire::create(); explosion->setPosition(INIT_PLAYER_POSITION); explosion->setDuration(0.0001); explosion->setAutoRemoveOnFinish(true); // 表示が終わったら自分を親から削除! this->addChild(explosion); } } else if(swipeDirection == SwipeDirection::DOWN){ if(_isSwipeTimeDown <= 0){ this->initSwipeTime(); this->setIsSwipeTimeDown(SWIPE_WAIT_TIME); //音 CocosDenshion::SimpleAudioEngine::getInstance()->playEffect("dong.mp3"); //エフェクト auto explosion = ParticleFire::create(); explosion->setPosition(INIT_PLAYER_POSITION); explosion->setDuration(0.0001); explosion->setAutoRemoveOnFinish(true); // 表示が終わったら自分を親から削除! this->addChild(explosion); } } this->setTouchLocation(touch->getLocation()); } }; Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, this); //this->scheduleUpdate(); schedule(schedule_selector(MainScene::test), SFRAME_RATE); return true; }
bool SelectScene::init() { if ( !Layer::init() ) { return false; } //Dierctorを取り出し auto director = Director::getInstance(); //画像サイズ取り出し auto winSize = director->getWinSize(); //背景色 auto background = Sprite::create("select_background.png"); background->setPosition(Vec2(winSize.width / 2.0, winSize.height / 2.0)); this->addChild(background); //ロゴ表示 auto titleLogo = Sprite::create("select_logo.png"); titleLogo->setScale(1.3f); titleLogo->setAnchorPoint(Vec2::ANCHOR_MIDDLE_TOP); titleLogo->setPosition(Vec2(winSize.width /2.0, winSize.height - 10)); this->addChild(titleLogo); //説明の半透明枠を表示 auto menuground = LayerColor::create(Color4B(51,75,112,200), winSize.width - 50, winSize.height - 320); this->addChild(menuground); menuground->ignoreAnchorPointForPosition(false); //menuground->setAnchorPoint(Vec2::ANCHOR_MIDDLE); menuground->setPosition(Vec2(winSize.width /2.0, winSize.height/2.0)); //スコア表示 int i = 1; for (; i <= MAX_STAGE; i++){ auto stageImg = StringUtils::format(STAGE_IMG_FORMAT, i); auto stageImgPressed = StringUtils::format(STAGE_IMG_PRESSED_FORMAT, i); //ステージ選択ボタン auto gameItem = MenuItemImage::create(stageImg,stageImgPressed, [this](Ref *sender){ auto tapItem = (MenuItemImage*)sender; //ゲームスタート onGameStart(tapItem->getTag()); }); gameItem->setTag(i); gameItem->setScale(0.5f); //ハイスコアレベル auto stageHighKey = StringUtils::format(HIGHSCORE_KEY_STAGE, i); auto highScore = UserDefault::getInstance()->getDoubleForKey(stageHighKey.c_str()); auto scoreLabel = Label::createWithSystemFont( "HIGH SCORE : --.--- ", "Marker Felt", 28); if (highScore > 0.0 ) { scoreLabel->setString(StringUtils::format("HIGH SCORE : %6.3lf", highScore)); } scoreLabel->setColor(Color3B::YELLOW); scoreLabel->enableShadow(Color4B::BLACK, Size(0.5, 0.5), 3); scoreLabel->enableOutline(Color4B::BLACK, 1.5); //扱いやすいように背景の基準点変更 gameItem->setAnchorPoint(Vec2::ANCHOR_TOP_RIGHT); scoreLabel->setAnchorPoint(Vec2::ANCHOR_TOP_LEFT); auto gameMenu = Menu::create(gameItem, NULL); this->addChild(gameMenu); this->addChild(scoreLabel); gameMenu->setPosition(Vec2(winSize.width /2.0 - 70, winSize.height - 200 - ((i-1)* 85))); scoreLabel->setPosition(Vec2(winSize.width /2.0 -35, winSize.height - 200 - ((i-1)* 85))); } //menuボタン auto selectItem = MenuItemImage::create("common_btn_menu.png","common_btn_menu_pressed.png", [this](Ref *sender){ auto scene = TitleScene::createScene(); auto transition = TransitionFade::create(0.5, scene); Director::getInstance()->replaceScene(transition); }); selectItem->setAnchorPoint(Vec2::ANCHOR_BOTTOM_LEFT); auto menu = Menu::create(selectItem, nullptr); menu->setPosition(Vec2(25, 25)); this->addChild(menu); return true; }
void BackGroundLayer::LoadNode() { topBG = Sprite::create("toppic.png"); topBG->setPosition(Vec2(0, 640)); topBG->setAnchorPoint(Vec2(0, 1)); topBG->setScaleX(1.8750f); topBG->setScaleY(1.3370f); topBG->runAction(RepeatForever::create(Sequence::create(MoveBy::create(15, Vec2(960.0f, 0)), CallFunc::create([&](){ topBG->setPosition(Vec2(0, 640)); }), NULL))); this->addChild(topBG); topBGclone = Sprite::create("toppic.png"); topBGclone->setPosition(Vec2(0, 640)); topBGclone->setAnchorPoint(Vec2(1, 1)); topBGclone->setScaleX(1.8750f); topBGclone->setScaleY(1.3370f); topBGclone->runAction(RepeatForever::create(Sequence::create(MoveBy::create(15, Vec2(960, 0)), CallFunc::create([&](){ topBGclone->setPosition(Vec2(0, 640)); }), NULL))); this->addChild(topBGclone); buttomBG = PVEffectSprite::create("miku.jpg"); buttomBG->setPosition(Vec2(0, 0)); buttomBG->setAnchorPoint(Vec2(0, 0)); buttomBG->setScaleY(0.738f); buttomBG->setName("buttomBG"); buttomBG->retain(); this->addChild(buttomBG); //歌词结点 auto lyrcisNode = Node::create(); lyrcisNode->setPosition(Vec2(300.0f, 470.0f)); lyrcisNode->setName("lyrcisNode"); buttomBG->addChild(lyrcisNode); //歌词特效结点 auto lyrcisParticleNode = Node::create(); lyrcisParticleNode->setPosition(Vec2(300.0f, 470.0f)); lyrcisParticleNode->setName("lyrcisParticleNode"); buttomBG->addChild(lyrcisParticleNode); //初始化歌词Node,歌词Node包含5个歌词子结点 for (int i = 0; i < 5; ++i) { auto lyrcis = Label::create(); lyrcis->setAlignment(TextHAlignment::LEFT); lyrcis->setOpacity(0);//便于开始的FadeIn动作 lyrcis->setSystemFontSize(30); lyrcis->setPositionY(-i * 40); lyrcis->setColor(Color3B{ 241, 125, 170 }); #if (CC_TARGET_PLATFORM != CC_PLATFORM_ANDROID) lyrcis->enableOutline(Color4B(255, 192, 203, 255), 1); lyrcis->enableGlow(Color4B(255, 255, 255, 255)); #endif lyrcisNode->addChild(lyrcis); } auto lyrcisParticl = ParticleSystemQuad::create("particle/star.plist"); //歌词特效粒子 lyrcisParticl->setPositionY(40); lyrcisParticl->setTotalParticles(20); lyrcisParticl->setVisible(false); lyrcisParticl->setName("lyrcisParticle"); lyrcisParticleNode->addChild(lyrcisParticl); //触摸粒子 touchparticle = ParticleSystemQuad::create("particle/touch.plist"); touchparticle->setLocalZOrder(2); touchparticle->ignoreAnchorPointForPosition(true); touchparticle->setVisible(true); this->addChild(touchparticle); //初始化魂进度条 soulProgBar = ProgressTimer::create(Sprite::create("progressUp.png")); soulProgBar->setType(ProgressTimer::Type::BAR); soulProgBar->setPosition(Vec2(250, 550)); soulProgBar->ignoreAnchorPointForPosition(true); soulProgBar->setMidpoint(Point(0, 1)); soulProgBar->setBarChangeRate(Point(1, 0)); soulProgBar->setPercentage(0); this->addChild(soulProgBar); //添加进度条背景 auto soulProgBarBG = Sprite::create(); soulProgBarBG->setSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("progressDown.png")); soulProgBarBG->setPosition(Vec2(-5, -25)); soulProgBarBG->setAnchorPoint(Vec2(0, 0)); soulProgBarBG->setName("soul_progBarBG"); soulProgBarBG->setLocalZOrder(-1); soulProgBar->addChild(soulProgBarBG); scrollBar_Background = UVEffectSprite::create(); //初始化鼓面背景层 scrollBar_Background->setSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("sfieldbg.png")); scrollBar_Background->setPosition(Vec2(92.65f, 410.83f)); //设置绝对坐标 scrollBar_Background->setAnchorPoint(Vec2(0, 0));//设置坐标 scrollBar_Background->setScaleX(1.6885f); scrollBar_Background->setScaleY(1.5645f); scrollBar_Background->retain(); this->addChild(scrollBar_Background); scrollBar = Node::create(); //初始化鼓面 scrollBar->setPosition(Vec2(92.65f, 410.83f));//设置绝对坐标 scrollBar->setAnchorPoint(Vec2(0, 0));//设置坐标 scrollBar->setScaleX(1.6885f); scrollBar->setScaleY(1.5645f); scrollBar->setContentSize(scrollBar_Background->getContentSize());//复制上一层的长度 this->addChild(scrollBar); auto scrollBarGu = Node::create(); //滚动条鼓面结点 scrollBarGu->setPosition(Vec2(0, 0)); scrollBarGu->setLocalZOrder(2); scrollBar->addChild(scrollBarGu); scrollBarClone = Node::create(); scrollBarClone->setName("scrollBarClone"); scrollBarClone->setAnchorPoint(Vec2(0, 0)); scrollBarClone->setPosition(Vec2(512, 0)); auto scrollBarCloneGu = Node::create();//滚动副条鼓面结点 scrollBarCloneGu->setPosition(Vec2(0, 0)); scrollBarClone->addChild(scrollBarCloneGu); scrollBar->addChild(scrollBarClone); GUcharMap = Label::createWithCharMap("combonumber_balloon.png", 20, 24, '0'); //测试计数 GUcharMap->setAnchorPoint(Vec2(0, 0)); GUcharMap->setPosition(Vec2(0, -30)); GUcharMap->setString("0");// 初始化为0分 GUcharMap->setGlobalZOrder(4); scrollBar->addChild(GUcharMap); GUcharMapClone = Label::createWithCharMap("combonumber_balloon.png", 20, 24, '0'); //测试计数 GUcharMapClone->setAnchorPoint(Vec2(0, 0)); GUcharMapClone->setString("0");// 初始化为0分 GUcharMapClone->setGlobalZOrder(4); GUcharMapClone->setPosition(Vec2(0, -30)); scrollBarClone->addChild(GUcharMapClone); #pragma region 初始游戏谱面 for (int i = 0; i < DrumSurfaceLoader::PerDrumCount; ++i) //初始化 scrollBarGu与 scrollBarCloneGu的结点 { auto tempSprite = Sprite::create(); tempSprite->setVisible(false); tempSprite->setPosition(Vec2((i % DrumSurfaceLoader::PerDrumCount) * scrollBar->getContentSize().width / DrumSurfaceLoader::PerDrumCount, 30)); scrollBarGu->addChild(tempSprite); auto tempSprite2 = Sprite::create(); tempSprite2->setVisible(false); tempSprite2->setPosition(Vec2((i % DrumSurfaceLoader::PerDrumCount) * scrollBar->getContentSize().width / DrumSurfaceLoader::PerDrumCount, 30)); scrollBarCloneGu->addChild(tempSprite2); } scrollBarSpriteVector = scrollBarGu->getChildren(); for (const auto &node : scrollBarCloneGu->getChildren()) { scrollBarSpriteVector.pushBack(node); } #pragma endregion }
void GameOver::initShowScore() { auto _user = UserDefault::getInstance(); int sqlFlag = _user->getIntegerForKey("sqlFlag"); if(sqlFlag == 0){ SaveSQL::sqliteCreateTable(); SaveSQL::sqliteSetValueForKey(); _user->setIntegerForKey("sqlFlag", 1); } //今回のスコアを取り出す int _showScore = _user->getIntegerForKey("gameScore"); //ハイスコアを取り出す int _showhighScore = _user->getIntegerForKey("highScore"); //今回のスコアからランクを呼び出す(SQliteを使用) const char * gameScoreRank = SaveSQL::sqliteGetRankForScore(_showScore); const char * highScoreRank = SaveSQL::sqliteGetRankForScore(_showhighScore); //実績アップデート int _collect = SaveSQL::sqliteGetCollectForRank(gameScoreRank); CCLOG("collectNO %d",_collect); if(_collect==0) { //まだ取得したことのないランクだった場合 SaveSQL::sqliteUpdateCollectForScore(gameScoreRank,1); } //スコア表示 auto scoreLabel = Label::createWithSystemFont("","Marker Felt", 48); scoreLabel->setPosition(Point(WINSIZE.width * 0.5, WINSIZE.height * 0.9)); scoreLabel->setColor(Color3B::WHITE); scoreLabel->enableOutline(Color4B::BLACK,5); this->addChild(scoreLabel,Z_Label); scoreLabel->setString(StringUtils::format("現実逃避日数 : %d 日 \n現実逃避年数 : %d 年 %d 日", _showScore, _showScore/365, _showScore%365)); //ランク表示 auto rankLabel = Label::createWithSystemFont("","Marker Felt", 50); rankLabel->setPosition(Point(WINSIZE.width * 0.5, WINSIZE.height * 0.5)); rankLabel->setColor(Color3B::MAGENTA); rankLabel->enableOutline(Color4B::BLACK,5); this->addChild(rankLabel,Z_Label); rankLabel->setString(StringUtils::format("ランク : %s", gameScoreRank)); //ハイスコアandランク表示 auto scoreLabel2 = Label::createWithSystemFont("","Marker Felt", 30); scoreLabel2->setPosition(Point(WINSIZE.width * 0.7, WINSIZE.height * 0.7)); scoreLabel2->setColor(Color3B::RED); this->addChild(scoreLabel2,Z_Label); scoreLabel2->setString(StringUtils::format("最高逃避日数 : %d 日 \n最高現実逃避年数 : %d 年 %d 日 \n ランク : %s", _showhighScore, _showhighScore/365, _showhighScore%365, highScoreRank)); }
// on "init" you need to initialize your instance bool RelayGameLayer::init() { ////////////////////////////// // 1. super init first if (!GridLayer::init()) { return false; } Size visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); _SetDefaultValues(); //----------------------------------------------------- // 背景 auto spriteBack = Sprite::create("MainBackAll.png"); if(spriteBack) { // add "canvas" splash screen" spriteBack->setScale( this->getContentSize().width / spriteBack->getContentSize().width, this->getContentSize().height / spriteBack->getContentSize().height); // position the sprite on the center of the screen spriteBack->setPosition( origin.x + visibleSize.width / 2.f + origin.x, origin.y + visibleSize.height / 2.f + origin.y); spriteBack->setName("Back"); // add the sprite as a child to this layer this->addChild(spriteBack, ZOrder::BACK); } //----------------------------------------------------- // キャンバス auto layerCanvas = LayerCanvas::create(); if (layerCanvas && layerCanvas->createSprite("canvas.png")) { this->addChild(layerCanvas, ZOrder::CANVAS, "Canvas"); layerCanvas->setPosition( origin + visibleSize / 2.f ); layerCanvas->setVisible(false); } //----------------------------------------------------- // テーマ発表用 auto spriteBoard = Sprite::create("BigBoard.png"); if (spriteBoard) { spriteBoard->setPosition( origin + visibleSize/ 2.f ); spriteBack->setVisible(true); // 非表示 this->addChild(spriteBoard, ZOrder::BIGBOARD, "BigBoard"); auto size = spriteBoard->getContentSize(); // 表示ラベル設定 余白 x:90*y:60 // 上 auto labelTop = Label::createWithSystemFont("描く順番と解答者の発表です", "GenShinGothic-Regular.ttf", calcFontSize(40.f)); if (labelTop) { // 中央揃え上揃え labelTop->setAlignment(TextHAlignment::CENTER, TextVAlignment::TOP); labelTop->setPosition( size.width / 2.f, size.height - labelTop->getContentSize().height/2.f - 60.f ); spriteBoard->addChild(labelTop, 0, "TopLabel"); } // 中央 auto labelMiddle = Label::createWithSystemFont("", "GenShinGothic-Medium.ttf", calcFontSize(80.f)); labelMiddle->setName("MiddleLabel"); auto itemLabel = MenuItemLabel::create(labelMiddle, [this](Ref* pSender){ // 検索窓開く std::stringstream url; url << "https://www.google.co.jp/search?tbm=isch&q=" << m_nowTheme.theme; Application::getInstance()->openURL(url.str().c_str()); }); if (itemLabel) { m_pMiddleLabel = itemLabel; // 始めのうちは反応なし m_pMiddleLabel->setEnabled(false); // 中央揃え中央揃え labelMiddle->setAlignment(TextHAlignment::CENTER, TextVAlignment::BOTTOM); labelMiddle->setColor(Color3B(250, 210, 10)); m_pMiddleLabel->setColor(Color3B(250, 210, 10)); labelMiddle->setDimensions(size.width - 90, 0); m_pMiddleLabel->setName("ItemMiddleLabel"); auto menu = Menu::create(m_pMiddleLabel, nullptr); menu->setPosition( size / 2.f ); spriteBoard->addChild(menu, 0, "MenuMiddleLabel"); } // 下 auto labelBottom = Label::createWithSystemFont("1人目の人から順に\n画面をタッチしてください", "GenShinGothic-Regular.ttf", calcFontSize(37.f)); if (labelBottom) { // 中央揃え下揃え labelBottom->setAlignment(TextHAlignment::CENTER, TextVAlignment::BOTTOM); labelBottom->setAnchorPoint(Vec2(0.5f, 0.0f)); labelBottom->setPosition( size.width / 2.f, labelBottom->getContentSize().height / 2.f + 60.f ); spriteBoard->addChild(labelBottom, 0, "BottomLabel"); } } //----------------------------------------------------- // ラベル用 auto spriteSmallBoard = Sprite::create("board.png"); if (spriteSmallBoard) { spriteSmallBoard->setPosition( origin.x + visibleSize.width / 2.f, origin.y + visibleSize.height - spriteSmallBoard->getContentSize().height / 2.f ); this->addChild(spriteSmallBoard, ZOrder::TOPBOARD, "SmallBoard"); } //----------------------------------------------------- // ラベル設定 // アナウンス auto label = Label::createWithSystemFont(" ", "GenShinGothic-Medium.ttf", calcFontSize(30.f)); { label->setColor(Color3B(250, 250, 250)); // 白文字 label->enableOutline(Color4B::BLACK, 3); // 黒枠線 label->setHorizontalAlignment(TextHAlignment::CENTER); spriteSmallBoard->addChild(label, 10, "Label"); label->setPosition(spriteSmallBoard->getAnchorPointInPoints()); m_pLabel = label; // キャッシュ } //----------------------------------------------------- //----------------------------------------------------- // ボタン auto nextButton = MenuItemImage::create("button.png", "button2.png", [this](Ref* pSender) { if (FlowPhase::ANSWERED == m_flowPhase) { // タイトルへ dynamic_cast<SceneAtelierMain*>(this->getParent()->getParent())->toTitle(); } else { // 全消去 m_touchPoints[m_nowPage].clear(); m_pDrawNode->clear(); } }); if (nextButton) { m_pNextButton = nextButton; nextButton->setName("NextButton"); // ボタン非表示 //nextButton->setVisible(false); auto size = nextButton->getContentSize(); nextButton->setPosition( origin.x + visibleSize.width - size.width / 2.f, origin.y + size.height / 2.f); auto label = Label::createWithSystemFont("全消去", "GenShinGothic-Medium.ttf", calcFontSize(20.f)); if (label) { m_pButtonLabel = label; label->setPosition(nextButton->getContentSize() / 2.f); label->setHorizontalAlignment(TextHAlignment::CENTER); // ラベル非表示 //label->setVisible(false); label->setColor(Color3B(5, 5, 5)); nextButton->addChild(label, ZOrder::NEXTBUTTONLABEL, "ButtonLabel"); } } auto menuButtons = Menu::create(nextButton, nullptr); if (menuButtons) { menuButtons->setPosition(Vec2::ZERO); menuButtons->setVisible(false); this->addChild(menuButtons, ZOrder::MENUBUTTONS, "MenuButtons"); } //----------------------------------------------------- // 前後ボタン // 前 auto itemBack = MenuItemImage::create("BackButton.png", "BackButton2.png", [this](Ref* pSender){ auto button = dynamic_cast<MenuItemImage*>(pSender); if (0 < m_nowPage) { // 戻るよ! auto oldCanvas = this->getChildByName("Canvas"); if (!oldCanvas) oldCanvas = this->getChildByName("Canvas" + std::to_string(m_nowPage)); --m_nowPage; std::stringstream ss; ss << "Canvas" << m_nowPage; auto layerCanvas = this->getChildByName(ss.str()); layerCanvas->setLocalZOrder(oldCanvas->getLocalZOrder() + 1); auto drawNode = layerCanvas->getChildByName<DrawNode*>("DrawNode"); layerCanvas->setVisible(true); layerCanvas->runAction( Sequence::create( ReverseTime::create(PageTurn3D::create(0.5f, Size(24.f, 32.f))), CallFunc::create([this, layerCanvas, drawNode](){ // キャンバスの入れ替え //-------------------------- // DrawNode入れ替え m_pDrawNode = drawNode; //-------------------------- }), nullptr ) ); if (0 == m_nowPage) { // もう戻れないよ! button->setVisible(false); } button->getParent()->getChildByName("LastNextButton")->setVisible(true); } }); { itemBack->setName("LastBackButton"); } auto itemNext = MenuItemImage::create("NextButton.png", "NextButton2.png", [this](Ref* pSender){ auto button = dynamic_cast<MenuItemImage*>(pSender); const auto maxPage = m_touchPoints.size() - 1; if (maxPage > m_nowPage) { // 進むよ! auto oldCanvas = this->getChildByName("Canvas"); if (!oldCanvas) oldCanvas = this->getChildByName("Canvas" + std::to_string(m_nowPage)); ++m_nowPage; std::stringstream ss; ss << "Canvas" << m_nowPage; auto layerCanvas = this->getChildByName(ss.str()); layerCanvas->setLocalZOrder(oldCanvas->getLocalZOrder() - 1); auto drawNode = layerCanvas->getChildByName<DrawNode*>("DrawNode"); layerCanvas->setVisible(true); oldCanvas->runAction( Sequence::create( PageTurn3D::create(0.5f, Size(24.f, 32.f)), CallFunc::create([this, layerCanvas, drawNode](){ // キャンバスの入れ替え //-------------------------- // DrawNode入れ替え m_pDrawNode = drawNode; //-------------------------- }), nullptr ) ); if (maxPage == m_nowPage) { // もう進めないよ! button->setVisible(false); } button->getParent()->getChildByName("LastBackButton")->setVisible(true); } }); { itemNext->setName("LastNextButton"); itemNext->setVisible(false); } auto menuLastButtons = Menu::create(itemBack, itemNext, nullptr); { // 縦一列,間隔 const float padding = 10.f; menuLastButtons->alignItemsVerticallyWithPadding(padding); // 非表示 menuLastButtons->setVisible(false); auto canvas = layerCanvas->getSprite(); Vec2 leftBottom = canvas->convertToWorldSpace(Vec2::ZERO); auto size = itemBack->getContentSize(); menuLastButtons->setPosition(leftBottom.x / 2.f, leftBottom.y + size.height + padding / 2.f); this->addChild(menuLastButtons, ZOrder::MENULASTBUTTONS, "MenuLastButtons"); } //----------------------------------------------------- m_pDrawNode = DrawNode::create(); { m_pDrawNode->setAnchorPoint(Vec2::ZERO); auto canvas = layerCanvas->getSprite(); //layerCanvas->addChild(m_pDrawNode, 1); m_pDrawNode->setPosition( -(layerCanvas->getPositionX() - layerCanvas->getAnchorPoint().x*layerCanvas->getContentSize().width ), -(layerCanvas->getPositionY() - layerCanvas->getAnchorPoint().y*layerCanvas->getContentSize().height) ); canvas->addChild(m_pDrawNode, 1, "DrawNode"); } //----------------------------------------------------- // 描きすぎレイヤー auto layerTouch = Layer::create(); { layerTouch->setVisible(false); auto sprite = Sprite::create(); // 背景用 sprite->setTextureRect(Rect(0, 0, visibleSize.width, visibleSize.height)); sprite->setPosition(visibleSize / 2.f); sprite->setColor(Color3B::BLACK); sprite->setOpacity(192); layerTouch->addChild(sprite, 0); this->addChild(layerTouch, ZOrder::MOST_FRONT, "OverTouchLayer"); auto label = Label::createWithSystemFont("一人の持ち時間を使い果たしました\n" "\n次の人に回してタッチしてください\n", "GenShinGothic-Medium.ttf", calcFontSize(40.f)); { label->setPosition(layerTouch->getContentSize() / 2.f); label->setAlignment(TextHAlignment::CENTER, TextVAlignment::CENTER); label->setColor(Color3B(250, 250, 15)); layerTouch->addChild(label, 10, "Label"); } auto listener = EventListenerTouchOneByOne::create(); listener->setSwallowTouches(false); listener->onTouchBegan = [this, layerTouch](Touch* touch, Event* event){ if (layerTouch->isVisible()) { return true; } return false; }; listener->onTouchEnded = [this, layerTouch](Touch* touch, Event* event){ //layerTouch->setVisible(false); //m_pListener->setSwallowTouches(false); // 描きすぎレイヤー非表示 this->_SetOverTouchLayerVisible(false); if (m_nowPage >= m_playerNum - 2) { // 全員描いた場合 // キャンバスめくらない m_flowPhase = FlowPhase::JUDGE; // 解答ボックス出現 auto visibleSize = Director::getInstance()->getVisibleSize(); m_pEditBox->runAction( Sequence::create( CallFunc::create([this]{ m_pEditBox->setEnabled(false); }), EaseBackOut::create( MoveTo::create(0.5f, Vec2(visibleSize.width / 2.f, m_pEditBox->getPositionY() ) // 画面中央まで ) ), CallFunc::create([this]{ m_pEditBox->setEnabled(true); }), nullptr ) ); // 全消去無効化 m_pNextButton->setVisible(false); // ラベルの設定 m_pLabel->setString("テーマを答えてください"); } else { // 前の人の絵を見せる m_flowPhase = FlowPhase::SHOW; m_pLabel->setString("見終わったらタッチして描き始めてください"); } // 全員描いた場合 //if (m_nowPage >= m_playerNum - 1) //{ // // フェーズ // m_flowPhase = FlowPhase::JUDGE; // // // 解答ボックス出現 // auto visibleSize = Director::getInstance()->getVisibleSize(); // m_pEditBox->runAction( // Sequence::create( // CallFunc::create([this]{ m_pEditBox->setEnabled(false); }), // EaseBackOut::create( // MoveTo::create(0.5f, // Vec2(visibleSize.width / 2.f, // m_pEditBox->getPositionY() // ) // 画面中央まで // ) // ), // CallFunc::create([this]{ m_pEditBox->setEnabled(true); }), // nullptr // ) // ); // // // ラベルの設定 // m_pLabel->setString("テーマを答えてください"); // // //} }; this->_eventDispatcher->addEventListenerWithSceneGraphPriority(listener, layerTouch); m_pListener = listener; } //----------------------------------------------------- // 解答入力ボックス m_pEditBox = EditBox::create(spriteSmallBoard->getContentSize(), Scale9Sprite::create("board.png")); { // box auto size = m_pEditBox->getContentSize(); m_pEditBox->setPreferredSize(spriteSmallBoard->getContentSize()); m_pEditBox->setAnchorPoint(Vec2::ANCHOR_MIDDLE); m_pEditBox->setPosition(Vec2( origin.x + visibleSize.width + size.width / 2.f, origin.y + size.height / 2.f)); //m_pEditBox->setPosition(Vec2( // origin.x + visibleSize.width / 2.f, // origin.y + size.height / 2.f)); // 内部ラベル m_pEditBox->setFontName("GenShinGothic-Regular.ttf"); // ファミリー m_pEditBox->setFontSize(static_cast<int>(calcFontSize(25.f))); // サイズ m_pEditBox->setFontColor(Color3B(250, 250, 250)); // 色 m_pEditBox->getLabel()->setAnchorPoint(Vec2::ANCHOR_MIDDLE); m_pEditBox->getLabel()->setPosition(spriteSmallBoard->getContentSize() / 2.f); // 初期ラベル m_pEditBox->setPlaceHolder("ここをタッチして解答 (全てひらがなで、数字は半角で入力)"); // 例等初期値(入力時に消える) m_pEditBox->setPlaceholderFontColor(Color3B(5, 5, 5)); m_pEditBox->getPlaceHolderLabel()->setAnchorPoint(Vec2::ANCHOR_MIDDLE); m_pEditBox->getPlaceHolderLabel()->setPosition(spriteSmallBoard->getContentSize() / 2.f); // Box自体の設定 m_pEditBox->setMaxLength(20); // 文字数 m_pEditBox->setReturnType(EditBox::KeyboardReturnType::DEFAULT); // Returnキーが押された時 m_pEditBox->setInputMode(EditBox::InputMode::SINGLE_LINE); // 1行,自由文字列 // メソッド m_pEditBox->setDelegate(this); this->addChild(m_pEditBox, ZOrder::BOX, "EditBox"); } //----------------------------------------------------- // 間違え auto spriteCrossCanvas = Sprite::create("CrossCanvas.png"); { spriteCrossCanvas->setPosition(visibleSize / 2.f); spriteCrossCanvas->setVisible(false); this->addChild(spriteCrossCanvas, ZOrder::MOST_FRONT, "CrossCanvas"); } //----------------------------------------------------- // 正解 auto spriteCircleCanvas = Sprite::create("CircleCanvas.png"); { spriteCircleCanvas->setPosition(visibleSize / 2.f); spriteCircleCanvas->setVisible(false); this->addChild(spriteCircleCanvas, ZOrder::MOST_FRONT, "CircleCanvas"); } return true; }