bool DialogBox::init() { if (!ui::Layout::init()) return false; const Size &contentSize = Size(620, 250); auto center = Vec2(contentSize / 2.f); setContentSize(contentSize); setCascadeOpacityEnabled(true); setAnchorPoint(Vec2::ANCHOR_MIDDLE); setBackGroundImage("bg_panel.png", TextureResType::PLIST); setBackGroundImageScale9Enabled(true); setPosition(_world->_canvasCenter); setScaleY(0.f); auto touchListener = cocos2d::EventListenerTouchOneByOne::create(); touchListener->setSwallowTouches(true); touchListener->onTouchBegan = [&](Touch *touch, Event *event) { return true; }; Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(touchListener, this); _text = ui::Text::create(); _text->setFontName("fonts/kenvector_future.ttf"); _text->setFontSize(24); _text->setAnchorPoint(Vec2::ANCHOR_MIDDLE); _text->setColor(Palette::ICE); _text->setPosition(center + Vec2(0.f, 50.f)); _text->setVisible(false); addChild(_text); auto button = ui::Button::create("btn_no_n.png", "btn_no_t.png", "", TextureResType::PLIST); button->setPosition(center + Vec2(-150.f, -50.f)); button->addTouchEventListener(CC_CALLBACK_2(DialogBox::noButtonCallback, this)); button->setVisible(false); addChild(button); _yesButton = ui::Button::create("btn_yes_n.png", "btn_yes_t.png", "", TextureResType::PLIST); _yesButton->setPosition(center + Vec2(150.f, -50.f)); _yesButton->setVisible(false); addChild(_yesButton); return true; }
void Widget::copyProperties(Widget *widget) { setEnabled(widget->isEnabled()); setVisible(widget->isVisible()); setBright(widget->isBright()); setTouchEnabled(widget->isTouchEnabled()); setLocalZOrder(widget->getLocalZOrder()); setTag(widget->getTag()); setName(widget->getName()); setActionTag(widget->getActionTag()); _ignoreSize = widget->_ignoreSize; this->setContentSize(widget->_contentSize); _customSize = widget->_customSize; _sizeType = widget->getSizeType(); _sizePercent = widget->_sizePercent; _positionType = widget->_positionType; _positionPercent = widget->_positionPercent; setPosition(widget->getPosition()); setAnchorPoint(widget->getAnchorPoint()); setScaleX(widget->getScaleX()); setScaleY(widget->getScaleY()); setRotation(widget->getRotation()); setRotationSkewX(widget->getRotationSkewX()); setRotationSkewY(widget->getRotationSkewY()); setFlippedX(widget->isFlippedX()); setFlippedY(widget->isFlippedY()); setColor(widget->getColor()); setOpacity(widget->getOpacity()); _touchEventCallback = widget->_touchEventCallback; _touchEventListener = widget->_touchEventListener; _touchEventSelector = widget->_touchEventSelector; _clickEventListener = widget->_clickEventListener; _focused = widget->_focused; _focusEnabled = widget->_focusEnabled; _propagateTouchEvents = widget->_propagateTouchEvents; copySpecialProperties(widget); Map<int, LayoutParameter*>& layoutParameterDic = widget->_layoutParameterDictionary; for (auto iter = layoutParameterDic.begin(); iter != layoutParameterDic.end(); ++iter) { setLayoutParameter(iter->second->clone()); } }
bool SplashScene::init() { if (!Layer::init()) return false; Size size = getContentSize(); auto background = Sprite::create(pathToBack); background->setAnchorPoint(Vec2::ANCHOR_BOTTOM_LEFT); background->setScaleX(size.width / background->getContentSize().width); background->setScaleY(size.height / background->getContentSize().height); addChild(background, -1); auto label = Label::createWithSystemFont("LOADING. PLEASE WAIT.", "Fixedsys", 45); label->setAnchorPoint(Vec2::ANCHOR_MIDDLE); label->setPosition({ size.width / 2, size.height / 2 }); label->enableShadow(); addChild(label, 0); return true; }
int ScoreWidget::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = DrawWidget::qt_metacall(_c, _id, _a); if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { switch (_id) { case 0: setScaleX((*reinterpret_cast< double(*)>(_a[1]))); break; case 1: setScaleY((*reinterpret_cast< double(*)>(_a[1]))); break; case 2: setSharpsMode((*reinterpret_cast< int(*)>(_a[1]))); break; case 3: setNotesMode((*reinterpret_cast< int(*)>(_a[1]))); break; case 4: setClefMode((*reinterpret_cast< int(*)>(_a[1]))); break; case 5: setOpaqueMode((*reinterpret_cast< int(*)>(_a[1]))); break; case 6: setTransposeLevel((*reinterpret_cast< int(*)>(_a[1]))); break; case 7: setShowAllMode((*reinterpret_cast< int(*)>(_a[1]))); break; } _id -= 8; } return _id; }
bool SceneGame::init(int level) { Size visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); //背景 auto bg = Sprite::create("homebg.png"); bg->setPosition(Vec2(origin.x + visibleSize.width / 2, origin.y + visibleSize.height / 2)); bg->setScaleX(visibleSize.width / 640); bg->setScaleY(visibleSize.height / 960); addChild(bg); //标题 auto tile = Sprite::create("tile.png"); tile->setPosition(Vec2(origin.x + visibleSize.width / 2, origin.y + visibleSize.height - 80 - tile->getContentSize().height / 2)); addChild(tile); //菜单按钮 auto Itemhome = MenuItemImage::create("HomeNormal.png", "HomeSelected.png", CC_CALLBACK_1(SceneGame::menuSelectCallback, this)); auto Itemone = MenuItemImage::create("OneNormal.png", "OneSelected.png", CC_CALLBACK_1(SceneGame::menuSelectCallback, this)); auto Itemtwo = MenuItemImage::create("TwoNormal.png", "TwoSelected.png", CC_CALLBACK_1(SceneGame::menuSelectCallback, this)); auto Itemthree = MenuItemImage::create("ThreeNormal.png", "ThreeSelected.png", CC_CALLBACK_1(SceneGame::menuSelectCallback, this)); auto Itemfour = MenuItemImage::create("FourNormal.png", "FourSelected.png", CC_CALLBACK_1(SceneGame::menuSelectCallback, this)); auto Itemfive = MenuItemImage::create("FiveNormal.png", "FiveSelected.png", CC_CALLBACK_1(SceneGame::menuSelectCallback, this)); Itemhome->setTag(0); Itemone->setTag(1); Itemtwo->setTag(2); Itemthree->setTag(3); Itemfour->setTag(4); Itemfive->setTag(5); auto menu = Menu::create(Itemhome, Itemone, Itemtwo, Itemthree, Itemfour, Itemfive, NULL); menu->alignItemsHorizontally(); menu->setPosition(Vec2(origin.x + visibleSize.width / 2, origin.y + Itemhome->getContentSize().height / 2)); menu->setTag(888); this->addChild(menu, 1000); return true; }
bool Title::init() { if (!Layer::init()) { return false; } Size visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); ///////////////////////////// // 背景 auto backgroundImage = Sprite::create("images/background_title.jpg"); backgroundImage->setPosition(Point(origin.x + visibleSize.width/2, origin.y + visibleSize.height/2)); backgroundImage->setScaleX(visibleSize.width / backgroundImage->getContentSize().width); backgroundImage->setScaleY(visibleSize.height / backgroundImage->getContentSize().height); this->addChild(backgroundImage, -1); ///////////////////////////// // タイトル auto label = Label::createWithTTF("ソリティア", "fonts/mplus-2c-light.ttf", 24); label->setPosition(Vec2(origin.x + visibleSize.width/2, origin.y + visibleSize.height - label->getContentSize().height)); this->addChild(label, 1); ///////////////////////////// // スタートボタン auto startButton = MenuItemImage::create("images/button_normal.png", "images/button_normal.png", CC_CALLBACK_1(Title::startButtonCallback, this)); startButton->setPosition(Vec2(origin.x + visibleSize.width/2, origin.y + visibleSize.height/2)); auto menu = Menu::create(startButton, NULL); menu->setPosition(Vec2::ZERO); this->addChild(menu, 2); return true; }
bool GamePlaying::onTouchBegan(Touch* t,Event* ev){ if(_slushLimit==0){ return true; } //auto s = getChildByName("reverse"); //s->setVisible(true); //s->runAction(Sequence::createWithTwoActions(DelayTime::create(0.5f),CallFunc::create([s](){s->setVisible(false);}))); _touchedPos = t->getLocation(); auto sprite=Sprite::create("blade.png"); sprite->setAnchorPoint(Vec2(0.f,0.5f)); sprite->setScaleY(0.1f); sprite->setScaleX(0); sprite->setName("stigma"); sprite->setPosition(_touchedPos); addChild(sprite,100); //auto streak = getChildByName("streak"); //streak->setPosition(t->getLocation()); return true; }
void Widget::copyProperties(Widget *widget) { setEnabled(widget->isEnabled()); setVisible(widget->isVisible()); setBright(widget->isBright()); setTouchEnabled(widget->isTouchEnabled()); _touchPassedEnabled = false; setLocalZOrder(widget->getLocalZOrder()); setTag(widget->getTag()); setName(widget->getName()); setActionTag(widget->getActionTag()); _ignoreSize = widget->_ignoreSize; _size = widget->_size; _customSize = widget->_customSize; copySpecialProperties(widget); _sizeType = widget->getSizeType(); _sizePercent = widget->_sizePercent; _positionType = widget->_positionType; _positionPercent = widget->_positionPercent; setPosition(widget->getPosition()); setAnchorPoint(widget->getAnchorPoint()); setScaleX(widget->getScaleX()); setScaleY(widget->getScaleY()); setRotation(widget->getRotation()); setRotationSkewX(widget->getRotationSkewX()); setRotationSkewY(widget->getRotationSkewY()); setFlippedX(widget->isFlippedX()); setFlippedY(widget->isFlippedY()); setColor(widget->getColor()); setOpacity(widget->getOpacity()); Map<int, LayoutParameter*>& layoutParameterDic = widget->_layoutParameterDictionary; for (auto iter = layoutParameterDic.begin(); iter != layoutParameterDic.end(); ++iter) { setLayoutParameter(iter->second->clone()); } onSizeChanged(); }
// on "init" you need to initialize your instance bool TranScene::init() { ////////////////////////////// // 1. super init first if (!Layer::init()) { return false; } Size visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); //初始化 word_num = 0; //背景精灵 auto bg1 = Sprite::create("background.jpg"); //为适应屏幕进行缩放 bg1->setScaleX((float)visibleSize.width / (float)bg1->getContentSize().width); bg1->setScaleY((float)visibleSize.height / (float)bg1->getContentSize().height); bg1->setPosition(Vec2(origin.x + visibleSize.width / 2, 0)); bg1->setAnchorPoint(Vec2(0.5, 0)); bg1->setTag(101); this->addChild(bg1, 0); auto MagicItem = MenuItemImage::create("boom.png", "boom_1.png", CC_CALLBACK_1(TranScene::menuTouch, this)); MagicItem->setPosition(Vec2(visibleSize.width - MagicItem->getContentSize().width - 20, MagicItem->getContentSize().height * 2)); MagicItem->setAnchorPoint(Vec2(0.5, 0.5)); //MagicItem->setTag(102); auto menu = Menu::create(MagicItem, NULL); menu->setPosition(Vec2::ZERO); this->addChild(menu, 1); createLabel(); return true; }
bool MainMenuScene::init() { if ( !Layer::init() ) { return false; } Size visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); CocosDenshion::SimpleAudioEngine::getInstance()->playBackgroundMusic("title.mp3", true); auto background = Sprite::create("BG_cropped.png"); background->setPosition(Point(visibleSize.width / 2 + origin.x, visibleSize.height / 2 + origin.y)); background->setScaleX(visibleSize.width/background->getContentSize().width); background->setScaleY(visibleSize.height/background->getContentSize().height); this->addChild(background); auto playItem = MenuItemImage::create("Play (1).png", "Play (2).png", CC_CALLBACK_1(MainMenuScene::GoToGuideScene, this)); playItem->setPosition(Point(visibleSize.width / 2 + origin.x, visibleSize.height*0.4 + origin.y)); auto CItem = MenuItemImage::create("credits1.png", "credits2.png", CC_CALLBACK_1(MainMenuScene::GoToCScene, this)); CItem->setPosition(Point(visibleSize.width / 2 + origin.x, visibleSize.height*0.2 + origin.y)); auto menu = Menu::create(playItem,CItem,NULL); menu->setPosition(Point::ZERO); this->addChild(menu,11); auto gameTitleLabel= Label::createWithTTF("Halloween\n Candy Rush", "FEASFBRG.TTF", visibleSize.height * SCORE_FONT); gameTitleLabel->setColor(Color3B::YELLOW); gameTitleLabel->setPosition(Point(visibleSize.width/2+origin.x, visibleSize.height*0.75+origin.y)); this->addChild(gameTitleLabel,10); auto highScore = UserDefault::getInstance()->getIntegerForKey("HIGHSCORE", 0); auto tempHigh = cocos2d::__String::createWithFormat("Best Score: %i", highScore); auto highScoreLabel = Label::createWithTTF(tempHigh->getCString(), "FEASFBRG.TTF", visibleSize.height * SCORE_FONT * 0.5); highScoreLabel->setColor(Color3B::ORANGE); highScoreLabel->setPosition(Point(visibleSize.width / 2 + origin.x, visibleSize.height * 0.55 + origin.y)); this->addChild(highScoreLabel); return true; }
// on "init" you need to initialize your instance bool ChooseMan::init() { if (!Layer::init()) { return false; } Size visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); //±³¾°¾«Áé auto bg1 = Sprite::create("choose_bg.jpg"); //ΪÊÊÓ¦ÆÁÄ»½øÐÐËõ·Å bg1->setScaleX((float)visibleSize.width / (float)bg1->getContentSize().width); bg1->setScaleY((float)visibleSize.height / (float)bg1->getContentSize().height); bg1->setPosition(Vec2(origin.x + visibleSize.width / 2, 0)); bg1->setAnchorPoint(Vec2(0.5, 0)); bg1->setTag(101); this->addChild(bg1, 0); CreateItem(); return true; }
ScoresElementMainGame::ScoresElementMainGame(Layer *layer, Size size) { const int fraction = 16; _scores = 0; _layerParent = layer; _layerBack = Layer::create(); _layerBack->setPosition({ 0, (size.height / fraction) * (fraction - 1) }); _layerBack->setAnchorPoint(Vec2::ANCHOR_BOTTOM_LEFT); auto spriteBackground = Sprite::create(backgroundImgPath); spriteBackground->setAnchorPoint(Vec2::ANCHOR_BOTTOM_LEFT); spriteBackground->setScaleX(size.width / spriteBackground->getContentSize().width); spriteBackground->setScaleY((size.height / spriteBackground->getContentSize().height) / fraction); spriteBackground->setOpacity(50); _layerBack->addChild(spriteBackground, -1); _labelScores = Label::createWithSystemFont("Scores: " + std::to_string(_scores), "Fixedsys", 25); _labelScores->setAnchorPoint(Vec2::ANCHOR_MIDDLE); _labelScores->setPosition({ size.width / 2, 25 }); _layerBack->addChild(_labelScores, 0); _updateScoresCallback = new MessagesQueue::WrapperMessageQueueCallback_1(CC_CALLBACK_1(ScoresElementMainGame::updateScoresCallback, this) , "ScoresElementUpdateScores"); MessagesQueue::getInstance()->addListener(MessagesQueue::MessageType::UPDATE_SCORES, *_updateScoresCallback); }
void FuelBar::setHeight(int height) { setScaleY(height/_defaultSize.height); }
bool AllianceAreaPopupView::init(){ if(!PopupBaseView::init()){ return false; } setIsHDPanel(true); isMoving = false; this->setModelLayerOpacity(0); this->setContentSize(CCDirector::sharedDirector()->getWinSize()); m_picNode = CCNode::create(); m_picNode->setContentSize(CCSize(_tile_width * 2, _tile_height * 2)); m_picNode->setAnchorPoint(ccp(0, 0)); CCPoint testPoint =PopupViewController::getInstance()->getTouchPoint() + ccp(-_tile_width, -_tile_height); // m_picNode->setPosition(PopupViewController::getInstance()->getTouchPoint() + ccp(-_tile_width, -_tile_height)); CCPoint tilePoint = WorldController::getInstance()->getPointByIndex(m_tileIndex); CCPoint viewPoint = getInLayerPoint(tilePoint); viewPoint = viewPoint + ccp(-_tile_width * 1.5, -_tile_height); m_picNode->setPosition(viewPoint); m_cityNode = CCNode::create(); /*int mapIndex = 3; while (mapIndex >= 0) { auto arr = WorldController::getInstance()->getCityPicArr(mapIndex, 0, false ,44996); int posX = _tile_width / 2; int posY = _tile_height / 2; if(mapIndex == 0 || mapIndex == 2){ posX = _tile_width; } if(mapIndex == 3){ posX = _tile_width + posX; } if(mapIndex == 1 || mapIndex == 3){ posY = _tile_height; } if(mapIndex == 2){ posY = _tile_height + posY; } auto itMap = arr.begin(); while (itMap!=arr.end()) { std::string picName = (*itMap).pic; int addX = (*itMap).x; int addY = (*itMap).y; auto sprite = CCLoadSprite::createSprite(picName.c_str()); sprite->setAnchorPoint(ccp(0, 0)); if (CCCommonUtils::isIosAndroidPad()) { m_cityNode->addChild(sprite); sprite->setPosition(ccp(posX, posY) - ccp(_tile_width / 2, _tile_height / 2) + ccp(addX, addY)); } else { m_picNode->addChild(sprite); sprite->setPosition(ccp(posX, posY) - ccp(_tile_width / 2, _tile_height / 2) + ccp(addX, addY)); } ++itMap; } mapIndex--; }*/ auto tower = CCLoadSprite::createSprite("territory_fort.png"); tower->setPosition(ccp(_tile_width -25, _tile_height + 62)); m_picNode->addChild(tower); if (CCCommonUtils::isIosAndroidPad()) { m_picNode->addChild(m_cityNode); m_cityNode->setScale(WORLD_DEFAULT_HD_SCALE); m_cityNode->setPosition(ccp(-_tile_width * (WORLD_DEFAULT_HD_SCALE - 1),-_tile_height * (WORLD_DEFAULT_HD_SCALE - 1))); } CCPointArray* pointArr = CCPointArray::create(3); pointArr->addControlPoint(ccp(-70,59)); pointArr->addControlPoint(ccp(-2,23)); pointArr->addControlPoint(ccp(66,57)); CCLoadSprite::doResourceByCommonIndex(507, true); for (int i = 0; i < 3; i++) { auto bannerSprite = CCFlagWaveSprite::create(CCLoadSprite::loadResource("1212_double.png")); if (CCCommonUtils::isIosAndroidPad()) { bannerSprite->setScale(0.25); } else bannerSprite->setScale(0.18); bannerSprite->setPosition(ccp(_tile_width, _tile_height)+pointArr->getControlPointAtIndex(i) + ccp(12, 20)); m_picNode->addChild(bannerSprite); } CCLoadSprite::doResourceByCommonIndex(507, false); if (CCCommonUtils::isIosAndroidPad()) { m_cancelBtn = CCControlButton::create(CCLoadSprite::createScale9Sprite("but_blue.png")); m_cancelBtn->addTargetWithActionForControlEvents(this, cccontrol_selector(AllianceAreaPopupView::onCancelBtnClick), CCControlEventTouchUpInside); m_cancelBtn->setPreferredSize(CCSize(160, 70)); m_cancelBtn->setScaleX(2.1); m_cancelBtn->setScaleY(1.7); m_confirmBtn = CCControlButton::create(CCLoadSprite::createScale9Sprite("btn_green3.png")); m_confirmBtn->setBackgroundSpriteForState(CCLoadSprite::createScale9Sprite("btn_green3.png"),CCControlStateHighlighted); m_confirmBtn->setBackgroundSpriteForState(CCLoadSprite::createScale9Sprite("Btn_grey.png"),CCControlStateDisabled); m_confirmBtn->addTargetWithActionForControlEvents(this, cccontrol_selector(AllianceAreaPopupView::onConfirmBtnClick), CCControlEventTouchUpInside); m_confirmBtn->setPreferredSize(CCSize(160, 70)); m_confirmBtn->setScaleX(2.1); m_confirmBtn->setScaleY(1.7); auto bg = CCLoadSprite::createSprite("technology_11.png"); m_picNode->addChild(bg); m_btnLabel = CCLabelIF::create(_lang("115302").c_str()); m_btnLabel->setFontSize(32); m_btnLabel->setColor(ccc3(255, 255, 255)); m_btnLabel1 = CCLabelIF::create(_lang("115021").c_str()); m_btnLabel1->setFontSize(32); m_btnLabel1->setColor(ccc3(255, 255, 255)); m_picNode->addChild(m_cancelBtn); m_cancelBtn->setPosition(_tile_width - m_cancelBtn->getContentSize().width * m_cancelBtn->getScaleX() / 2 - 15, 0); m_picNode->addChild(m_confirmBtn); m_confirmBtn->setPosition(_tile_width + m_confirmBtn->getContentSize().width * m_confirmBtn->getScaleX() / 2 + 15, m_cancelBtn->getPositionY()); m_picNode->addChild(m_btnLabel); m_btnLabel->setPosition(m_confirmBtn->getPosition()); m_picNode->addChild(m_btnLabel1); m_btnLabel1->setPosition(m_cancelBtn->getPosition()); bg->setPosition(ccp(_tile_width, m_cancelBtn->getPositionY())); bg->setScaleY(8); bg->setScaleX(5); } else { m_cancelBtn = CCControlButton::create(CCLoadSprite::createScale9Sprite("but_blue.png")); CCCommonUtils::setButtonTitleColor(m_cancelBtn, ccc3(255, 255, 255)); CCCommonUtils::setButtonTitle(m_cancelBtn, _lang("115021").c_str()); m_cancelBtn->addTargetWithActionForControlEvents(this, cccontrol_selector(AllianceAreaPopupView::onCancelBtnClick), CCControlEventTouchUpInside); m_cancelBtn->setPreferredSize(CCSize(160, 70)); m_confirmBtn = CCControlButton::create(CCLoadSprite::createScale9Sprite("btn_green3.png")); m_confirmBtn->setBackgroundSpriteForState(CCLoadSprite::createScale9Sprite("btn_green3.png"),CCControlStateHighlighted); m_confirmBtn->setBackgroundSpriteForState(CCLoadSprite::createScale9Sprite("Btn_grey.png"),CCControlStateDisabled); m_confirmBtn->addTargetWithActionForControlEvents(this, cccontrol_selector(AllianceAreaPopupView::onConfirmBtnClick), CCControlEventTouchUpInside); m_confirmBtn->setPreferredSize(CCSize(160, 70)); CCCommonUtils::setButtonTitleColor(m_confirmBtn, ccc3(255, 255, 255)); CCCommonUtils::setButtonTitle(m_confirmBtn, _lang("115302").c_str()); auto bg = CCLoadSprite::createSprite("technology_11.png"); m_picNode->addChild(bg); m_iconNode = CCNode::create(); int num = WorldController::getInstance()->m_bAAreaCost; std::string picPath = ""; // picPath = "ui_gold.png"; // // // auto sprite = CCLoadSprite::createSprite(picPath.c_str()); // m_iconNode->addChild(sprite); // CCCommonUtils::setSpriteMaxSize(sprite, 40); m_numText = CCLabelIF::create(CC_ITOA(num)); // m_btnLabel = CCLabelIF::create(_lang("115302").c_str()); // m_btnLabel->setFontSize(22); // m_btnLabel->setColor(ccc3(255, 230, 116)); m_picNode->addChild(m_cancelBtn); m_cancelBtn->setPosition(_tile_width - m_cancelBtn->getContentSize().width / 2 - 15, 0); m_picNode->addChild(m_confirmBtn); m_confirmBtn->setPosition(_tile_width + m_confirmBtn->getContentSize().width / 2 + 15, m_cancelBtn->getPositionY()); // m_numBG = CCLoadSprite::createSprite("num_text_bg.png"); // m_picNode->addChild(m_numBG); // m_numBG->setScaleX(1.1); bg->setPosition(ccp(_tile_width, m_cancelBtn->getPositionY())); bg->setScaleY(4); bg->setScaleX(3); m_picNode->addChild(m_iconNode); m_iconNode->setPosition(m_confirmBtn->getPositionX() - 30, m_confirmBtn->getPositionY() - 15); // m_picNode->addChild(m_numText); // m_numText->setAnchorPoint(ccp(0, 0.5)); // m_numText->setPosition(m_confirmBtn->getPositionX(), m_confirmBtn->getPositionY() - 15); // m_picNode->addChild(m_btnLabel); // m_btnLabel->setPosition(m_confirmBtn->getPositionX(), m_confirmBtn->getPositionY() + 20); // m_numBG->setPosition(ccp(m_confirmBtn->getPositionX(), m_confirmBtn->getPositionY() - 15)); } this->addChild(m_picNode, 2); m_showNode = CCNode::create(); this->addChild(m_showNode, 1); refreshShowNode(false); return true; }
bool GamePlay::init() { if (!Layer::init()) { return false; } gameState = Ready; visibleSize = Director::getInstance()->getVisibleSize(); getSoundMusic(); //load game AI //init array number and computation int ARRAY_NUMBER[9] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; arrNum = gameAI->randomNumber(ARRAY_NUMBER, SUM_NUM); for (int i = 0; i < SUM_NUM; i++) { arrNUM[i] = arrNum[i]; } char s[SUM_COM] = ""; //TODO change level // arrCOM = gameAI->randomComputation(s, SUM_COM, // GamePlay::instance()->getLevel() >= 2 ? 2 : 3); arrCOM = gameAI->randomComputation(s, SUM_COM, 2); for (int i = 0; i < SUM_COM; i++) { arrCOMPUTATE[i] = arrCOM[i]; } for (int i = 0; i < SUM_COM / 2; i++) { tempResult[i] = INIT_FRAME; } int arr[GamePlay::instance()->getLevel()]; int* arrayLevel = gameAI->randomLessNumber(arr, GamePlay::instance()->getLevel()); //load background auto bg = Sprite::create("background.png"); bg->setAnchorPoint(Vec2(0, 0)); bg->setPosition(Vec2(0, 0)); this->addChild(bg, -1); float rX = visibleSize.width / bg->getContentSize().width; float rY = visibleSize.height / bg->getContentSize().height; bg->setScaleX(rX); bg->setScaleY(rY); //show logo game Sprite *logoGame = Sprite::create("smalllogo.png"); logoGame->setAnchorPoint(Vec2(0.0, 1.0)); logoGame->setPosition(Vec2(PADDING, visibleSize.height - PADDING)); logoGame->setTag(TAG_LOGO); logoGame->setScale(0.6f); this->addChild(logoGame); //load frame ready float baseY = logoGame->getPositionY() - logoGame->getBoundingBox().size.height - PADDING; float baseX = PADDING / 2; for (int i = 0; i < SUM_NUM; i++) { frameReady[i] = Sprite::create("frame.png"); float width = frameReady[i]->getContentSize().width; float height = frameReady[i]->getContentSize().height; frameReady[i]->setTag(TAG_START_READY_POINT + i); frameReady[i]->setPositionX(baseX + 5.0 / 8.0 * i * width + width / 2); if (i % 2 == 0) { frameReady[i]->setPositionY(baseY - height / 2); } else { frameReady[i]->setPositionY(baseY - height); } this->addChild(frameReady[i]); } //create frame play float paddingY = 0; float paddingX = 0; for (int i = 0; i < SUM_NUM; i++) { float baseX = PADDING; framePlay[i] = TouchSprite::create("frame.png"); framePlay[i]->setTag(TAG_FRAME_PLAY + i); paddingX = (visibleSize.width - PADDING * 4 - framePlay[i]->getContentSize().width) / 3.0; framePlay[i]->setPositionX( PADDING + framePlay[i]->getContentSize().width / 2 + paddingX * (i % 3)); float baseY = frameReady[0]->getPositionY(); if (i % 3 == 0) paddingY = paddingX * ((int) i / 3 + 1); framePlay[i]->setPositionY(baseY - paddingY); framePlay[i]->score = 0; framePlay[i]->isFixed = false; for (int j = 0; j < GamePlay::instance()->getLevel(); j++) { if (arrNum[i] == arrayLevel[j]) { framePlay[i]->score = arrNum[i]; //TODO framePlay[i]->isFixed = true; framePlay[i]->setDisplayFrame( SpriteFrame::create( "frame" + std::to_string(arrNum[i]) + ".png", framePlay[i]->getTextureRect())); } } // CCLog("frameplay[%d] = %d", i, framePlay[i]->score); this->addChild(framePlay[i]); } //load number button //TODO std::string name = "number"; MoveTo* actionBy; int k = 0; for (int i = 0; i < SUM_NUM; i++) { numberBtn[i] = TouchSprite::create( name + std::to_string(i + 1) + ".png"); numberBtn[i]->setTag(TAG_NUMBER + i); numberBtn[i]->setPositionY(visibleSize.height + 3 * PADDING); numberBtn[i]->setPositionX(frameReady[i]->getPositionX()); numberBtn[i]->setZOrder(10); numberBtn[i]->isHidden = false; this->addChild(numberBtn[i]); actionBy = MoveTo::create(0.4, frameReady[i]->getPosition()); auto easeAction = EaseBounceInOut::create(actionBy); for (int j = 0; j < GamePlay::instance()->getLevel(); j++) { if ((i + 1) == arrayLevel[j]) { numberBtn[i]->isHidden = true; numberBtn[i]->setVisible(false); } } if (numberBtn[i]->isHidden == false) { auto delay = DelayTime::create(0.2 * (k + 1)); auto sequence = Sequence::create(delay, easeAction, nullptr); numberBtn[i]->runAction(sequence); k++; } } if (frameReady != NULL) { for (int i = 0; i < SUM_NUM; i++) frameReady[i]->setVisible(false); } //create result frame and equal character Sprite* frameEqual[SUM_COM / 2]; Sprite* characterEqual[SUM_COM / 2]; for (int i = 0; i < SUM_COM / 2; i++) { characterEqual[i] = Sprite::create("icon_equal.png"); frameEqual[i] = Sprite::createWithTexture(frameReady[i]->getTexture()); frameEqual[i]->setTag(TAG_FRAME_EQUAL + i); if (i % 2 == 0) { //frame equal frameEqual[i]->setPositionY( framePlay[SUM_NUM - 1]->getPositionY() + paddingX * (2 - (int) i / 2)); frameEqual[i]->setPositionX( framePlay[SUM_NUM - 1]->getPositionX() + paddingX); //character equal characterEqual[i]->setPositionY( framePlay[SUM_NUM - 1]->getPositionY() + paddingX * ((int) i / 2)); characterEqual[i]->setPositionX( framePlay[SUM_NUM - 1]->getPositionX() + paddingX / 2); } else { //frame equal frameEqual[i]->setPositionY( framePlay[SUM_NUM - 1]->getPositionY() - paddingX); frameEqual[i]->setPositionX( framePlay[SUM_NUM - 1]->getPositionX() - paddingX * (2 - (int) i / 2)); //character equal characterEqual[i]->setPositionY( framePlay[SUM_NUM - 1]->getPositionY() - paddingX / 2); characterEqual[i]->setPositionX( framePlay[SUM_NUM - 1]->getPositionX() - paddingX * (2 - (int) i / 2)); } this->addChild(frameEqual[i]); this->addChild(characterEqual[i]); } //position of character computation Sprite* plusSprite = Sprite::create("icon_plus.png"); Sprite* minusSrite = Sprite::create("icon_minus.png"); Sprite* mutiplySprite = Sprite::create("icon_multiply.png"); Sprite* divideSprite = Sprite::create("icon_divide.png"); for (int i = 0; i < SUM_COM; i++) { if (arrCOM[i] == '+') comBtn[i] = Sprite::createWithTexture(plusSprite->getTexture()); else if (arrCOM[i] == '-') comBtn[i] = Sprite::createWithTexture(minusSrite->getTexture()); else if (arrCOM[i] == '*') comBtn[i] = Sprite::createWithTexture(mutiplySprite->getTexture()); else if (arrCOM[i] == '/') comBtn[i] = Sprite::createWithTexture(divideSprite->getTexture()); this->addChild(comBtn[i]); } setPosCharacterBtn(comBtn, framePlay, paddingX); //calculate result result[0] = gameAI->calculate(arrNum[0], arrNum[1], arrNum[2], arrCOM[0], arrCOM[1]); result[1] = gameAI->calculate(arrNum[0], arrNum[3], arrNum[6], arrCOM[2], arrCOM[7]); result[2] = gameAI->calculate(arrNum[3], arrNum[4], arrNum[5], arrCOM[5], arrCOM[6]); result[3] = gameAI->calculate(arrNum[1], arrNum[4], arrNum[7], arrCOM[3], arrCOM[8]); result[4] = gameAI->calculate(arrNum[6], arrNum[7], arrNum[8], arrCOM[10], arrCOM[11]); result[5] = gameAI->calculate(arrNum[2], arrNum[5], arrNum[8], arrCOM[4], arrCOM[9]); gameAI->printArray(result, SUM_COM / 2); //set result to frameEqual for (int i = 0; i < SUM_COM / 2; i++) { resultLabel[i] = LabelTTF::create("00:00", "fonts/hlvgchac.ttf", 48); resultLabel[i]->setColor(Color3B(Color3B::RED)); resultLabel[i]->setString(std::to_string(result[i])); resultLabel[i]->setPosition(frameEqual[i]->getPosition()); this->addChild(resultLabel[i]); } //button pause Sprite* pauseGame = Sprite::create("pauseBtn.png"); Sprite* pauseGame_press = Sprite::create("pauseBtn_press.png"); MenuItemSprite* pauseBtn = MenuItemSprite::create(pauseGame, pauseGame_press, NULL, CC_CALLBACK_0(GamePlay::gamePause, this)); Menu *menuPause = Menu::create(pauseBtn, nullptr); menuPause->setPosition( Vec2( visibleSize.width - PADDING - pauseBtn->getContentSize().width / 2, visibleSize.height - PADDING - pauseBtn->getContentSize().height / 2)); menuPause->setTag(TAG_PAUSE_BTN); this->addChild(menuPause); //time in pause button LabelTTF *currenttime = LabelTTF::create("00:00", "fonts/hlvgchac.ttf", 40); Point timePoint = menuPause->getPosition(); currenttime->setPosition( Vec2(timePoint.x - PADDING * 2, timePoint.y + 7.0 / 4.0 * PADDING)); currenttime->setZOrder(10); currenttime->setColor(Color3B(Color3B::RED)); currenttime->setTag(TAG_LABEL_COUNT_TIME); this->addChild(currenttime); std::string miniModeSprite = getLevelString( GamePlay::instance()->getLevel()); Sprite* miniMode = Sprite::create("mini" + miniModeSprite + ".png"); miniMode->setScale(0.5); miniMode->setPosition( Vec2(currenttime->getPositionX(), currenttime->getPositionY() - currenttime->getContentSize().height - PADDING / 2)); this->addChild(miniMode); //board menu pause boardMenuPause = Sprite::create("board.png"); boardMenuPause->setPosition( Vec2(visibleSize.width / 2, visibleSize.height + boardMenuPause->getContentSize().height / 2 + PADDING)); boardMenuPause->setZOrder(30); this->addChild(boardMenuPause); //button help of menu Sprite* helpbtn = Sprite::create("help1.png"); Sprite* helpbtn_press = Sprite::create("help2.png"); MenuItemSprite* helpBtn = MenuItemSprite::create(helpbtn, helpbtn_press, NULL, CC_CALLBACK_0(GamePlay::gameHelp, this)); Menu *menuHelp = Menu::create(helpBtn, nullptr); menuHelp->setPosition( Vec2(boardMenuPause->getContentSize().width / 2, boardMenuPause->getContentSize().height - helpbtn->getContentSize().height)); boardMenuPause->addChild(menuHelp); //button setting of menu Sprite* setbtn = Sprite::create("settings1.png"); Sprite* setbtn_press = Sprite::create("settings2.png"); MenuItemSprite* setBtn = MenuItemSprite::create(setbtn, setbtn_press, NULL, CC_CALLBACK_0(GamePlay::gameSetting, this)); Menu *menuSetting = Menu::create(setBtn, nullptr); menuSetting->setPosition( Vec2(boardMenuPause->getContentSize().width / 2, menuHelp->getPositionY() - setbtn->getContentSize().height - PADDING)); menuSetting->setTag(TAG_SETTING); boardMenuPause->addChild(menuSetting); //button quit of menu Sprite* quitbtn = Sprite::create("quit1.png"); Sprite* quitbtn_press = Sprite::create("quit2.png"); MenuItemSprite* quitBtn = MenuItemSprite::create(quitbtn, quitbtn_press, NULL, CC_CALLBACK_0(GamePlay::gameQuit, this)); Menu *menuQuit = Menu::create(quitBtn, nullptr); menuQuit->setPosition( Vec2(menuSetting->getPositionX(), menuSetting->getPositionY() - quitbtn->getContentSize().height - PADDING)); menuQuit->setTag(TAG_QUIT); boardMenuPause->addChild(menuQuit); //button replay, resume, share MenuItemImage* resumeBtn = MenuItemImage::create("menu_resume.png", "menu_resume.png", CC_CALLBACK_0(GamePlay::gameResume, this)); auto menuResume = Menu::create(resumeBtn, nullptr); menuResume->setPosition( Vec2(menuSetting->getPositionX(), menuQuit->getPositionY() - resumeBtn->getContentSize().height - PADDING)); boardMenuPause->addChild(menuResume); MenuItemImage* replayBtn = MenuItemImage::create("menu_replay.png", "menu_replay.png", CC_CALLBACK_0(GamePlay::gameReplay, this)); auto menuReplay = Menu::create(replayBtn, nullptr); menuReplay->setPosition( Vec2( menuResume->getPositionX() - resumeBtn->getContentSize().width - PADDING, menuResume->getPositionY())); boardMenuPause->addChild(menuReplay); MenuItemImage* shareBtn = MenuItemImage::create("menu_share.png", "menu_share.png", CC_CALLBACK_0(GamePlay::gameShareCloseMenuPause, this)); auto menuShare = Menu::create(shareBtn, nullptr); menuShare->setPosition( Vec2( menuResume->getPositionX() + resumeBtn->getContentSize().width + PADDING, menuResume->getPositionY())); boardMenuPause->addChild(menuShare); auto event_listener = EventListenerTouchOneByOne::create(); auto dispatcher = Director::getInstance()->getEventDispatcher(); event_listener->setSwallowTouches(true); event_listener->onTouchBegan = CC_CALLBACK_2(GamePlay::onTouchBegan, this); event_listener->onTouchMoved = CC_CALLBACK_2(GamePlay::onTouchMoved, this); event_listener->onTouchEnded = CC_CALLBACK_2(GamePlay::onTouchEnded, this); dispatcher->addEventListenerWithSceneGraphPriority(event_listener, this); this->setKeypadEnabled(true); this->scheduleUpdate(); // this->schedule(schedule_selector(GamePlay::update), 1.0f); gameState = Playing; return true; }
// 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(); auto center = Point(visibleSize.width / 2 + origin.x, visibleSize.height / 2 + origin.y); auto bg = Sprite::create("bg.png"); bg->setPosition(center); auto bgsize = bg->getContentSize(); float scaleX = visibleSize.width / bgsize.width; float scaleY = visibleSize.height / bgsize.height; bg->setScaleX(scaleX); bg->setScaleY(scaleY); addChild(bg); auto grass = Sprite::create("grass.png"); grass->setAnchorPoint(ccp(0.5, 0.5)); grass->setPosition(center); addChild(grass); Texture2D::TexParams p; p.minFilter = GL_LINEAR; p.magFilter = GL_LINEAR; p.wrapS = GL_REPEAT; p.wrapT = GL_REPEAT; glActiveTexture(GL_TEXTURE0); auto textureCache = Director::getInstance()->getTextureCache(); auto tex1 = textureCache->addImage("grass.png"); //tex1->setTexParameters(p); GLProgram* prog = new GLProgram(); prog->initWithFilenames("perlin_wind.vert", "perlin_wind.frag"); prog->retain(); prog->link(); prog->use(); prog->updateUniforms(); float gtime = Director::getInstance()->getDeltaTime(); float ctime = Director::getInstance()->getTotalFrames() * Director::getInstance()->getAnimationInterval(); //CCLog("Wind is %f", pnoise); ShaderCache::getInstance()->addGLProgram(prog, "perlin_wind"); grass->setGLProgram(prog); GLProgramState* state = GLProgramState::getOrCreateWithGLProgram(prog); //state->setUniformFloat("u_gtime", 1.0f); //state->setUniformFloat("u_ctime",0.5f); //state->setUniformFloat("u_color", m_cloudAmount); state->setUniformFloat("u_wind", 0); schedule(schedule_selector(HelloWorld::setWind)); prog->release(); schedule(schedule_selector(HelloWorld::setWind)); return true; }
bool HelloWorld::init() { if ( !Layer::init() ) { return false; } CReadFile::getInstance()->init(); Size visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); auto closeItem = MenuItemImage::create( "picture/blue1_menu.png", "picture/blue2_menu.png" , CC_CALLBACK_1(HelloWorld::menuCloseCallback, this)); closeItem->setScale(0.3f); closeItem->setPosition(Vec2(origin.x + visibleSize.width - closeItem->getContentSize().width/2-310 , origin.y + closeItem->getContentSize().height/2+160)); auto closeItem1 = MenuItemImage::create( "picture/blue1_menu.png", "picture/blue2_menu.png", CC_CALLBACK_1(HelloWorld::menuCloseCallback1, this)); closeItem1->setScale(0.5f); closeItem1->setPosition(Vec2(origin.x + visibleSize.width - closeItem1->getContentSize().width/2-310 , origin.y + closeItem1->getContentSize().height/2+330)); auto SetMenu = MenuItemImage::create( "picture/shezhi2_cover.png", "picture/shezhi1_cover.png", CC_CALLBACK_1(HelloWorld::menuCloseCallback3, this)); SetMenu->setScale(0.8f); SetMenu->setPosition(Vec2(origin.x + visibleSize.width - SetMenu->getContentSize().width/2-390 , origin.y + SetMenu->getContentSize().height/2+260)); auto menu = Menu::create(closeItem,closeItem1,SetMenu, NULL); menu->setPosition(Vec2::ZERO); this->addChild(menu, 1); #if CC_TARGET_PLATFORM == CC_PLATFORM_WIN32 auto label = Label::createWithTTF(Tools::Unicode2Utf8(L"开始游戏"), "fonts/msyh.ttc", 24); #else auto label = Label::createWithTTF("开始游戏", "fonts/msyh.ttc", 24); #endif label->setPosition(Vec2(closeItem1->getPositionX(), closeItem1->getPositionY())); label->setScale(0.8f); this->addChild(label, 1); #if CC_TARGET_PLATFORM == CC_PLATFORM_WIN32 auto label1 = Label::createWithTTF(Tools::Unicode2Utf8(L"退出"), "fonts/msyh.ttc", 24); #else auto label1 = Label::createWithTTF("退出", "fonts/msyh.ttc", 24); #endif label1->setPosition(Vec2(closeItem->getPositionX(), closeItem->getPositionY())); label1->setScale(0.8f); this->addChild(label1,1); auto sprite = Sprite::create("picture/shumabaobei.jpg"); Size sprSize = sprite->getContentSize(); sprite->setScaleX(visibleSize.width/sprSize.width); sprite->setScaleY(visibleSize.height/sprSize.height); sprite->setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y)); this->addChild(sprite, 0); auto logo = Sprite::create("picture/logo.png"); Size logoSize = logo->getContentSize(); auto spark = Sprite::create("picture/spark.png"); spark->setPosition(-logoSize.width,0); auto clippingNode = ClippingNode::create(); clippingNode->setPosition(500,560); this->addChild(clippingNode); clippingNode->setAlphaThreshold(0.05f); clippingNode->setContentSize(logoSize); clippingNode->setStencil(logo); clippingNode->addChild(logo,1); clippingNode->addChild(spark,2); auto moveAction = MoveTo::create(2.0f,Vec2(logoSize.width,0)); auto moveBackAction = MoveTo::create(2.0f,Vec2(-logoSize.width,0)); spark->runAction(RepeatForever::create(Sequence::create(moveAction,moveBackAction,NULL))); if (CReadFile::getInstance()->getshuomingkg()) { CReadFile::getInstance()->setshuomingkg(false); CSound::getInstance()->playBG("Butter-Fly.mp3",CSound::getInstance()->getIsPlay()); CSound::getInstance()->setIsPlay(true); auto shuominglayer = LayerColor::create(Color4B(120,120,120,200)); #if CC_TARGET_PLATFORM == CC_PLATFORM_WIN32 auto wenzi = Label::createWithTTF(Tools::Unicode2Utf8(L"欢迎来到宝库设计的数码宝贝记忆消除游戏"),"fonts/msyh.ttc", 28); #else auto wenzi = Label::createWithTTF("欢迎来到宝库设计的数码宝贝记忆消除游戏","fonts/msyh.ttc", 28); #endif wenzi->setMaxLineWidth(460); wenzi->setLineBreakWithoutSpace(true); wenzi->setPosition(480,520); wenzi->setColor(ccc3(0,0,0)); shuominglayer->runAction(FadeOut::create(5)); wenzi->runAction(FadeOut::create(3)); shuominglayer->addChild(wenzi,2); this->addChild(shuominglayer,2); } return true; }
bool Help::init() { if (!Layer::init()) { return false; } Size visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); //背景精灵 if (getPass() == 1) { auto bg1 = Sprite::create("help_bg1.jpg"); //为适应屏幕进行缩放 bg1->setScaleX((float)visibleSize.width / (float)bg1->getContentSize().width); bg1->setScaleY((float)visibleSize.height / (float)bg1->getContentSize().height); bg1->setPosition(Vec2(origin.x + visibleSize.width / 2, 0)); bg1->setAnchorPoint(Vec2(0.5, 0)); bg1->setTag(101); this->addChild(bg1, 0); } else if (getPass() == 2) { auto bg1 = Sprite::create("help_bg2.jpg"); //为适应屏幕进行缩放 bg1->setScaleX((float)visibleSize.width / (float)bg1->getContentSize().width); bg1->setScaleY((float)visibleSize.height / (float)bg1->getContentSize().height); bg1->setPosition(Vec2(origin.x + visibleSize.width / 2, 0)); bg1->setAnchorPoint(Vec2(0.5, 0)); bg1->setTag(101); this->addChild(bg1, 0); } else if (getPass() == 3){ auto bg1 = Sprite::create("help_bg3.jpg"); //为适应屏幕进行缩放 bg1->setScaleX((float)visibleSize.width / (float)bg1->getContentSize().width); bg1->setScaleY((float)visibleSize.height / (float)bg1->getContentSize().height); bg1->setPosition(Vec2(origin.x + visibleSize.width / 2, 0)); bg1->setAnchorPoint(Vec2(0.5, 0)); bg1->setTag(101); this->addChild(bg1, 0); } else if (getPass() == 4) { auto bg1 = Sprite::create("help_bg4.png"); //为适应屏幕进行缩放 bg1->setScaleX((float)visibleSize.width / (float)bg1->getContentSize().width); bg1->setScaleY((float)visibleSize.height / (float)bg1->getContentSize().height); bg1->setPosition(Vec2(origin.x + visibleSize.width / 2, 0)); bg1->setAnchorPoint(Vec2(0.5, 0)); bg1->setTag(101); this->addChild(bg1, 0); } else if (getPass() == 5) { auto bg1 = Sprite::create("help_bg4.png"); //为适应屏幕进行缩放 bg1->setScaleX((float)visibleSize.width / (float)bg1->getContentSize().width); bg1->setScaleY((float)visibleSize.height / (float)bg1->getContentSize().height); bg1->setPosition(Vec2(origin.x + visibleSize.width / 2, 0)); bg1->setAnchorPoint(Vec2(0.5, 0)); bg1->setTag(101); this->addChild(bg1, 0); } auto MagicItem = MenuItemImage::create("continue.png", "continue2.png", CC_CALLBACK_1(Help::menuContinueCallback, this)); MagicItem->setPosition(Vec2(visibleSize.width - MagicItem->getContentSize().width - 20, MagicItem->getContentSize().height * 2)); MagicItem->setAnchorPoint(Vec2(0.5, 0.5)); auto menu = Menu::create(MagicItem, NULL); menu->setPosition(Vec2::ZERO); this->addChild(menu, 1); return true; }
void HelloWorld::menuCloseCallback3(cocos2d::Ref* pSender) { CSound::getInstance()->preloadEffect("pew-pew-lei.wav"); CSound::getInstance()->playEffect("pew-pew-lei.wav"); Size visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); auto SetLayer = LayerColor::create(Color4B(120,120,120,255)); auto SetLayerSize = SetLayer->getContentSize(); SetLayer->setScaleX(visibleSize.width/SetLayerSize.width); SetLayer->setScaleY(visibleSize.height/SetLayerSize.height); SetLayer->ignoreAnchorPointForPosition(false); SetLayer->setAnchorPoint(Vec2(0.5f,0.5f)); SetLayer->setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y)); auto setbg = Sprite::create("picture/setbg.png"); auto setbgsize = setbg->getContentSize(); setbg->setScaleX(visibleSize.width/setbgsize.width); setbg->setScaleY(visibleSize.height/setbgsize.height); setbg->setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y)); SetLayer->addChild(setbg); auto dis = Director::getInstance()->getEventDispatcher(); auto test = EventListenerTouchOneByOne::create(); test->setSwallowTouches(true); test->onTouchBegan = [=](Touch *pTouch, Event *pEvent)->bool{ return true; }; Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(test,SetLayer); auto paihangbang = MenuItemImage::create( "picture/blue1_menu.png", "picture/blue2_menu.png", CC_CALLBACK_1(HelloWorld::menuCloseCallback5,this)); paihangbang->setPosition(Vec2(origin.x + visibleSize.width - paihangbang->getContentSize().width/2-300 , origin.y + paihangbang->getContentSize().height/2+180)); paihangbang->setScale(0.8f); auto menu = Menu::create(paihangbang, NULL); menu->setPosition(Vec2::ZERO); SetLayer->addChild(menu, 1); #if CC_TARGET_PLATFORM == CC_PLATFORM_WIN32 auto paihangbanglabel = Label::createWithTTF(Tools::Unicode2Utf8(L"排行榜"), "fonts/msyh.ttc", 30); #else auto paihangbanglabel = Label::createWithTTF("排行榜", "fonts/msyh.ttc", 30); #endif paihangbanglabel->setPosition(paihangbang->getPositionX(),paihangbang->getPositionY()); paihangbanglabel->setAnchorPoint(Vec2(0,0)); SetLayer->addChild(paihangbanglabel,1); string str; if (CSound::getInstance()->getIsPlay()) str = "picture/soundon1_cover.png"; else str = "picture/soundon2_cover.png"; auto musicsprite = Sprite::create(str); musicsprite->setPosition(Vec2(origin.x + visibleSize.width - musicsprite->getContentSize().width/2-320 , origin.y + musicsprite->getContentSize().height/2+400)); auto dis1 = Director::getInstance()->getEventDispatcher(); auto test1 = EventListenerTouchOneByOne::create(); test1->setSwallowTouches(true); test1->onTouchBegan = [=](Touch *pTouch, Event *pEvent)->bool{ Vec2 pos = pTouch->getLocation(); if (musicsprite->getBoundingBox().containsPoint(pos)) { if (CSound::getInstance()->getIsPlay()) { Texture2D* tex = Director::getInstance()->getTextureCache()->addImage("picture/soundon2_cover.png"); musicsprite->setTexture(tex); } else { Texture2D* tex = Director::getInstance()->getTextureCache()->addImage("picture/soundon1_cover.png"); musicsprite->setTexture(tex); } CSound::getInstance()->setIsPlay(!CSound::getInstance()->getIsPlay()); CSound::getInstance()->playBG("Butter-Fly.mp3",CSound::getInstance()->getIsPlay()); CReadFile::getInstance()->saveUserInfo(); return true; } return false; }; Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(test1,musicsprite); SetLayer->addChild(musicsprite); auto back = MenuItemImage::create( "picture/pauseBackRoom.png", "picture/pauseBackRoom.png", CC_CALLBACK_1(HelloWorld::menuCloseCallback4,this)); back->setPosition(Vec2(origin.x + visibleSize.width - back->getContentSize().width/2-310 , origin.y + back->getContentSize().height/2+280)); auto menu1 = Menu::create(back, NULL); menu1->setPosition(Vec2::ZERO); SetLayer->addChild(menu1, 1); this->addChild(SetLayer, 1); }
Alert* Alert::create() { //usual cocos create, note that I'm skipping handling errors. should fix that Alert* alert = new (std::nothrow) Alert(); if (alert && alert->init()) { alert->autorelease(); } Size visibleSize = Director::getInstance()->getVisibleSize(); Size node_size = visibleSize*0.80f; alert->setContentSize(node_size); alert->setLayoutType(ui::Layout::Type::RELATIVE); //alert->setBackGroundColor(Color3B::BLACK); //alert->setBackGroundColorOpacity(255/1.5); //alert->setBackGroundColorType(ui::LayoutBackGroundColorType::SOLID); alert->setBackGroundImage("main_UI_export_10_x4.png", TextureResType::PLIST); alert->setBackGroundImageScale9Enabled(true); alert->setBackGroundImageColor(Color3B(114, 160, 72)); //alert->setBackGroundImageOpacity(200.0f); //layout->setClippingEnabled(true); auto create_txt = [&](std::string msg, ui::RelativeLayoutParameter* param) { auto txt = ui::Text::create(msg, DEFAULT_FONT, sx(25.0f)); Label* lbl = (Label*)txt->getVirtualRenderer(); lbl->getFontAtlas()->setAliasTexParameters(); txt->setTextColor(Color4B::BLACK); //txt->enableOutline(Color4B::BLACK, 2); txt->ignoreContentAdaptWithSize(false); //word wrap or something alert->addChild(txt); txt->setLayoutParameter(param); return txt; }; auto header_param = ui::RelativeLayoutParameter::create(); header_param->setRelativeName("header_param"); header_param->setAlign(ui::RelativeAlign::PARENT_TOP_CENTER_HORIZONTAL); header_param->setMargin(ui::Margin(sx(10), sy(30), sx(10), sy(10))); alert->header_txt = create_txt("Title Here", header_param); auto sub_header_param = ui::RelativeLayoutParameter::create(); sub_header_param->setRelativeName("sub_header_param"); sub_header_param->setAlign(ui::RelativeAlign::LOCATION_BELOW_CENTER); sub_header_param->setMargin(ui::Margin(sx(10), sy(10), sx(10), sy(10))); alert->sub_header_txt = create_txt("Sub header", sub_header_param); sub_header_param->setRelativeToWidgetName("header_param"); auto body_param = ui::RelativeLayoutParameter::create(); body_param->setAlign(ui::RelativeAlign::PARENT_LEFT_CENTER_VERTICAL); body_param->setMargin(ui::Margin(sx(30), sy(10), sx(10), sy(10))); alert->body_txt = create_txt("Body content", body_param); Size body_size = alert->body_txt->getAutoRenderSize(); alert->body_txt->setTextAreaSize(Size( body_size.width, body_size.height )); auto close_btn = ui::Button::create(); close_btn->addTouchEventListener([alert](Ref*, TouchEventType type) { if (type == TouchEventType::ENDED) { Size visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); Vec2 pos = Vec2( origin.x + visibleSize.width - 20, origin.y + 20 ); alert->shrink_close(pos); }; }); close_btn->setTitleText("X"); close_btn->setTitleColor(Color3B::RED); close_btn->setTitleFontSize(sx(40.0f)); close_btn->getTitleRenderer()->enableOutline(Color4B::GRAY, 10); close_btn->setScaleX(sx(1.0f)); close_btn->setScaleY(sy(1.0f)); alert->close_btn = close_btn; ui::RelativeLayoutParameter* close_param = ui::RelativeLayoutParameter::create(); close_param->setAlign(ui::RelativeLayoutParameter::RelativeAlign::PARENT_TOP_RIGHT); close_param->setMargin(ui::Margin(sx(30), sy(20), sx(30), sy(30))); alert->close_btn->setLayoutParameter(close_param); alert->addChild(alert->close_btn); auto done_btn = ui::Button::create(); done_btn->addTouchEventListener([alert](Ref*, TouchEventType type) { if (type == TouchEventType::ENDED) { Size visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); Vec2 pos = Vec2( origin.x + visibleSize.width - 20, origin.y + 20 ); alert->shrink_close(pos); }; }); done_btn->setScale9Enabled(true); done_btn->loadTextureNormal("main_UI_export_10_scale9_x4.png", ui::TextureResType::PLIST); done_btn->setTitleText("Done"); done_btn->setTitleFontSize(40.0f); done_btn->setTitleFontName(DEFAULT_FONT); auto lbl_size = done_btn->getTitleRenderer()->getContentSize(); done_btn->setContentSize( Size( lbl_size.width * 1.5f, lbl_size.height * 1.5f ) ); done_btn->ignoreContentAdaptWithSize(false); //word wrap or something done_btn->setTitleColor(Color3B::BLACK); done_btn->setScaleX(sx(1.0f)); done_btn->setScaleY(sy(1.0f)); alert->done_btn = done_btn; ui::RelativeLayoutParameter* done_param = ui::RelativeLayoutParameter::create(); done_param->setAlign(ui::RelativeLayoutParameter::RelativeAlign::PARENT_BOTTOM_CENTER_HORIZONTAL); done_param->setMargin(ui::Margin(sx(30), sy(20), sx(30), sy(30))); done_param->setRelativeName("done_btn"); alert->done_btn->setLayoutParameter(done_param); alert->addChild(alert->done_btn); auto listener = EventListenerTouchOneByOne::create(); listener->setSwallowTouches(true); listener->onTouchBegan = CC_CALLBACK_2(Alert::onTouchBegan, alert); listener->onTouchEnded = CC_CALLBACK_2(Alert::onTouchEnded, alert); Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, alert); return alert; };
void StartScene::addTarget() { DataModel *m = DataModel::getModel(); Wave *wave = this->getCurrentWave(); if(wave==nullptr) this->cleanup(); if (wave->totalCreeps <= 0) { if (m->targets.size()==0) getNextWave(); return; } wave->totalCreeps--; Creep *target = NULL; /* int random = rand()%3; if (random == 0) { target = FastGrayCreep::creep(m->waypoints.size()); } else if(random == 1) { target = StrongGreenCreep::creep(m->waypoints.size()); } else { target = MonsterYellowCreep::creep(m->waypoints.size()); } */ target = Creep::createWithType(wave->creeptype,m->waypoints.size(),true); WayPoint *waypoint = target->getCurrentWaypoint(); target->setPosition(waypoint->getPosition()); waypoint = target->getNextWaypoint(); auto lifeBar = CCProgressTimer::create(CCSprite::create("loginbg.png")); lifeBar->setType(kCCProgressTimerTypeBar); lifeBar->setPercentage(100.0f); lifeBar->setBarChangeRate(ccp(1, 0));//水平方向 lifeBar->setMidpoint(ccp(0,0));//设置起始点为左下方 lifeBar->setPosition(target->sprite->getPosition().x, target->sprite->getPosition().y+60); lifeBar->setScaleY(0.6); lifeBar->setScaleX(0.3); target->addChild(lifeBar,1); target->lifeBar = lifeBar; auto emptyLifeBar = Sprite::create("login_dbg.png"); emptyLifeBar->setScaleX(0.3); emptyLifeBar->setScaleY(0.3); emptyLifeBar->setPosition(lifeBar->getPosition()); target->addChild(emptyLifeBar,0); target->emptyLifeBar = emptyLifeBar; this->addChild(target, 1); int moveDuration = target->moveDuration; auto actionMove = CCMoveTo::create(moveDuration, waypoint->getPosition()); auto lifeBarActionMove = MoveTo::create(moveDuration, ccp(waypoint->getPosition().x,waypoint->getPosition().y+25)); auto actionMoveDone = CallFuncN::create(this, callfuncN_selector(StartScene::FollowPath)); target->runAction(CCSequence::create(actionMove, actionMoveDone, NULL)); // lifeBar->runAction(CCSequence::create(lifeBarActionMove, NULL)); target->tag = 1; m->targets.pushBack(target); }
void Sprite3D::createNode(NodeData* nodedata, Node* root, const MaterialDatas& materialdatas, bool singleSprite) { Node* node=nullptr; for(const auto& it : nodedata->modelNodeDatas) { if(it) { if(it->bones.size() > 0 || singleSprite) { if(singleSprite && root!=nullptr) root->setName(nodedata->id); auto mesh = Mesh::create(nodedata->id, getMeshIndexData(it->subMeshId)); if(mesh) { _meshes.pushBack(mesh); if (_skeleton && it->bones.size()) { auto skin = MeshSkin::create(_skeleton, it->bones, it->invBindPose); mesh->setSkin(skin); } mesh->_visibleChanged = std::bind(&Sprite3D::onAABBDirty, this); if (it->matrialId == "" && materialdatas.materials.size()) { const NTextureData* textureData = materialdatas.materials[0].getTextureData(NTextureData::Usage::Diffuse); mesh->setTexture(textureData->filename); } else { const NMaterialData* materialData=materialdatas.getMaterialData(it->matrialId); if(materialData) { const NTextureData* textureData = materialData->getTextureData(NTextureData::Usage::Diffuse); if(textureData && !textureData->filename.empty()) { auto tex = Director::getInstance()->getTextureCache()->addImage(textureData->filename); if(tex) { Texture2D::TexParams texParams; texParams.minFilter = GL_LINEAR; texParams.magFilter = GL_LINEAR; texParams.wrapS = textureData->wrapS; texParams.wrapT = textureData->wrapT; tex->setTexParameters(texParams); mesh->setTexture(tex); mesh->_isTransparent = (materialData->getTextureData(NTextureData::Usage::Transparency) != nullptr); } } } } Vec3 pos; Quaternion qua; Vec3 scale; nodedata->transform.decompose(&scale, &qua, &pos); setPosition3D(pos); setRotationQuat(qua); setScaleX(scale.x); setScaleY(scale.y); setScaleZ(scale.z); } } else { auto sprite = createSprite3DNode(nodedata,it,materialdatas); if (sprite) { if(root) { root->addChild(sprite); } } node=sprite; } } } if(nodedata->modelNodeDatas.size() ==0 ) { node= Node::create(); if(node) { node->setName(nodedata->id); // set locale transform Vec3 pos; Quaternion qua; Vec3 scale; nodedata->transform.decompose(&scale, &qua, &pos); node->setPosition3D(pos); node->setRotationQuat(qua); node->setScaleX(scale.x); node->setScaleY(scale.y); node->setScaleZ(scale.z); if(root) { root->addChild(node); } } } for(const auto& it : nodedata->children) { createNode(it,node, materialdatas, nodedata->children.size() == 1); } }
bool MIRPoliticalLayer::init(KTPauseLayerDelegate *delegate) { if (!KTPauseLayer::init(delegate)) { return false; } //adapt float bgHt; float tableViewHt; if (IS_IPHONE5) { bgHt = 800; tableViewHt = 680; } else if (IS_IPAD) { bgHt = 640; tableViewHt = 520; } else if (IS_IPAD_HD) { bgHt = (640 + 100) * 2; tableViewHt = (520 + 100)* 2; } else { bgHt = 600; tableViewHt = 480; } auto bg = LayerColor::create(MIRCellColor, winSize.width, bgHt); addChild(bg, -1); __Dictionary *root = __Dictionary::createWithContentsOfFile("Financial.plist"); __Array *array = (__Array *)root->objectForKey("political"); for (int i = 0; i < array->count(); i++) { __Dictionary *dict = (__Dictionary *)array->getObjectAtIndex(i); MIRModel *m = new MIRModel(dict); _dataArray.insert(0, m); m->release(); m->update(InvestmentType::POLITICAL, array->count() - 1 - i); } _tableView = TableView::create(this, Size(winSize.width, tableViewHt)); _tableView->setDirection(ScrollView::Direction::VERTICAL); _tableView->setDelegate(this); _tableView->setPosition(Point(0, 120 * _scale)); _tableView->setColor(Color3B(255, 0, 0)); addChild(_tableView); _tableView->reloadData(); auto drawer = DrawNode::create(); drawer->setAnchorPoint(Point::ANCHOR_BOTTOM_LEFT); drawer->setPosition(Point::ZERO); addChild(drawer, 128); auto type = Sprite::create("finantial_item.png"); type->setScaleY(60/type->getContentSize().height); type->setAnchorPoint(Point::ZERO); type->setPosition(Point(0, _tableView->getPositionY() + _tableView->getViewSize().height)); addChild(type); //画线 drawer->drawSegment(type->getPosition(), Point(winSize.width, type->getPositionY()), 0.5, Color4F::WHITE); drawer->drawSegment(Point(0,type->getPositionY() + 60), Point(winSize.width, 60 + type->getPositionY()), 0.5, Color4F::WHITE); const float typeLabelX[4] = {static_cast<float>(0.06 * screenSize.width), static_cast<float>(0.38 * screenSize.width), static_cast<float>(0.6 * screenSize.width), static_cast<float>(0.89 * screenSize.width)}; const char *typeStr[4] = {"项目", "等级", "消耗", "收益"}; for (int i = 0; i < sizeof(typeLabelX)/sizeof(typeLabelX[0]); i++) { Label *typeLabel = Label::createWithTTF(typeStr[i], TITLE_FONT, 24); typeLabel->setPosition(Point(typeLabelX[i], type->getPositionY() + 30)); typeLabel->setColor(MIRBrown); addChild(typeLabel); } auto header = Sprite::create("finantial_item.png"); header->setScaleY(100/type->getContentSize().height); header->setAnchorPoint(Point::ZERO); header->setPosition(Point(0, type->getPositionY() + 60)); addChild(header); auto titleLabel = Label::createWithTTF("海外投资", TITLE_FONT, 30); titleLabel->setPosition(Point(winSize.width/2, header->getPositionY() + 70)); addChild(titleLabel); auto subTitle = Label::createWithTTF("(关闭游戏仍可获得收入)", TITLE_FONT, 26); subTitle->setTextColor(Color4B(MIRBrown)); subTitle->setPosition(Point(winSize.width/2, header->getPositionY() + 26)); addChild(subTitle); MenuItemImage *item = MenuItemImage::create("close_investments.png", "close_investments.png", [=](Ref *sender){ this->playEffect(SOUND_BUTTON); doCancel(); }); item->setPosition(Point(winSize.width - 42, titleLabel->getPositionY())); auto menu = Menu::create(item, NULL); menu->setAnchorPoint(Point::ANCHOR_BOTTOM_LEFT); menu->setPosition(Point::ZERO); addChild(menu); return true; }
Scene* Chapter3::createScene() { // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // some upfront items that we need // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ auto dirs = Director::getInstance(); Size visibleSize = dirs->getVisibleSize(); Vec2 origin = dirs->getVisibleOrigin(); Size playingSize = Size(visibleSize.width, visibleSize.height - (visibleSize.height/8)); // actual playing size to work with // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // create a scene // 'scene' is an autorelease object // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ auto scene = Scene::create(); // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // create a node to hold non-sprites. // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ auto nodeItems = Node::create(); nodeItems->setName("nodeItems"); // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // create a node to hold menu // create a menu // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ auto menuNode = Node::create(); menuNode->setName("menuNode"); int index = 2; auto menuItem1 = MenuItemFont::create("First: Create a Sprite"); menuItem1->setFontNameObj("Marker Felt.ttf"); menuItem1->setFontSizeObj(32); menuItem1->setName("menuItem1"); menuItem1->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)); menuItem1->setCallback([&](cocos2d::Ref *sender) { auto dirs = Director::getInstance()->getRunningScene(); auto newSprite = Sprite::create("Blue_Front1.png"); newSprite->setPosition(100, 256); newSprite->setName("sprite1"); newSprite->setAnchorPoint(Vec2(0.5,0.5)); dirs->addChild(newSprite,1); auto anode = dirs->getChildByName("menuNode"); auto bnode = anode->getChildByName("menu"); auto cnode = bnode->getChildByName("menuItem1"); cnode->setVisible(false); auto dnode = bnode->getChildByName("menuItem2"); dnode->setVisible(true); }); auto menuItem2 = MenuItemFont::create("Next: Create a Sprite from a Rect"); menuItem2->setFontNameObj("Marker Felt.ttf"); menuItem2->setFontSizeObj(32); menuItem2->setName("menuItem2"); menuItem2->setVisible(false); menuItem2->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)); menuItem2->setCallback([&](cocos2d::Ref *sender) { auto dirs = Director::getInstance()->getRunningScene(); auto newSprite = Sprite::create("Blue_Front1.png", Rect(0,0,50,50)); newSprite->setPosition(250, 256); newSprite->setName("sprite2"); newSprite->setAnchorPoint(Vec2(0.5,0.5)); dirs->addChild(newSprite,1); auto anode = dirs->getChildByName("menuNode"); auto bnode = anode->getChildByName("menu"); auto cnode = bnode->getChildByName("menuItem2"); cnode->setVisible(false); auto dnode = bnode->getChildByName("menuItem3"); dnode->setVisible(true); }); auto menuItem3 = MenuItemFont::create("Next: Create a Sprite from SpriteFrameCache"); menuItem3->setFontNameObj("Marker Felt.ttf"); menuItem3->setFontSizeObj(32); menuItem3->setName("menuItem3"); menuItem3->setVisible(false); menuItem3->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)); menuItem3->setCallback([&](cocos2d::Ref *sender) { auto dirs = Director::getInstance()->getRunningScene(); auto spritecache = SpriteFrameCache::getInstance(); spritecache->addSpriteFramesWithFile("sprites.plist"); auto newSprite = Sprite::createWithSpriteFrameName("Blue_Front1.png"); newSprite->setPosition(400, 256); newSprite->setName("sprite3"); newSprite->setAnchorPoint(Vec2(0.5,0.5)); dirs->addChild(newSprite,1); auto anode = dirs->getChildByName("menuNode"); auto bnode = anode->getChildByName("menu"); auto cnode = bnode->getChildByName("menuItem3"); cnode->setVisible(false); auto dnode = bnode->getChildByName("menuItem4"); dnode->setVisible(true); }); auto menuItem4 = MenuItemFont::create("Next: Create a Sprite from SpriteFrame"); menuItem4->setFontNameObj("Marker Felt.ttf"); menuItem4->setFontSizeObj(32); menuItem4->setName("menuItem4"); menuItem4->setVisible(false); menuItem4->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)); menuItem4->setCallback([&](cocos2d::Ref *sender) { auto dirs = Director::getInstance()->getRunningScene(); auto spritecache = SpriteFrameCache::getInstance(); spritecache->addSpriteFramesWithFile("sprites.plist"); auto newspriteFrame = SpriteFrame::create("Blue_Front1.png", Rect(0,0,50,50)); auto newSprite = Sprite::createWithSpriteFrame(newspriteFrame); newSprite->setPosition(550, 256); newSprite->setName("sprite4"); newSprite->setAnchorPoint(Vec2(0.5,0.5)); dirs->addChild(newSprite,1); auto anode = dirs->getChildByName("menuNode"); auto bnode = anode->getChildByName("menu"); auto cnode = bnode->getChildByName("menuItem4"); cnode->setVisible(false); auto dnode = bnode->getChildByName("menuItem5"); dnode->setVisible(true); }); auto menuItem5 = MenuItemFont::create("Next: Scale a Sprite"); menuItem5->setFontNameObj("Marker Felt.ttf"); menuItem5->setFontSizeObj(32); menuItem5->setName("menuItem5"); menuItem5->setVisible(false); menuItem5->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)); menuItem5->setCallback([&](cocos2d::Ref *sender) { // hide everything else on the screen auto dirs = Director::getInstance()->getRunningScene(); dirs->removeChildByName("sprite1"); dirs->removeChildByName("sprite2"); dirs->removeChildByName("sprite3"); dirs->removeChildByName("sprite4"); auto newSprite = Sprite::create("Blue_Front1.png"); newSprite->setPosition(100, 256); newSprite->setName("sprite5"); newSprite->setAnchorPoint(Vec2(0.5,0.5)); dirs->addChild(newSprite,1); auto point00 = Sprite::create("dot.png"); point00->setName("point00"); point00->setPosition(newSprite->getPosition()); dirs->addChild(point00,2); auto newSpriteScaleXY = Sprite::create("Blue_Front1.png"); newSpriteScaleXY->setPosition(300,256); newSpriteScaleXY->setName("sprite6"); newSpriteScaleXY->setAnchorPoint(Vec2(0.5,0.5)); newSpriteScaleXY->setScale(2.0f); dirs->addChild(newSpriteScaleXY,1); auto pointXY = Sprite::create("dot.png"); pointXY->setName("pointXY"); pointXY->setPosition(newSpriteScaleXY->getPosition()); dirs->addChild(pointXY,2); auto newSpriteScaleX = Sprite::create("Blue_Front1.png"); newSpriteScaleX->setPosition(500,256); newSpriteScaleX->setName("sprite7"); newSpriteScaleX->setAnchorPoint(Vec2(0.5,0.5)); newSpriteScaleX->setScaleX(2.0f); dirs->addChild(newSpriteScaleX,1); auto pointX = Sprite::create("dot.png"); pointX->setName("pointX"); pointX->setPosition(newSpriteScaleX->getPosition()); dirs->addChild(pointX,2); auto newSpriteScaleY = Sprite::create("Blue_Front1.png"); newSpriteScaleY->setPosition(800, 256); newSpriteScaleY->setName("sprite8"); newSpriteScaleY->setAnchorPoint(Vec2(0.5,0.5)); newSpriteScaleY->setScaleY(2.0f); dirs->addChild(newSpriteScaleY,1); auto pointY = Sprite::create("dot.png"); pointY->setName("pointY"); pointY->setPosition(newSpriteScaleY->getPosition()); dirs->addChild(pointY,2); auto anode = dirs->getChildByName("menuNode"); auto bnode = anode->getChildByName("menu"); auto cnode = bnode->getChildByName("menuItem5"); cnode->setVisible(false); auto dnode = bnode->getChildByName("menuItem6"); dnode->setVisible(true); }); auto menuItem6 = MenuItemFont::create("Next: Anchor Point and Sprite"); menuItem6->setFontNameObj("Marker Felt.ttf"); menuItem6->setFontSizeObj(32); menuItem6->setName("menuItem6"); menuItem6->setVisible(false); menuItem6->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)); menuItem6->setCallback([&](cocos2d::Ref *sender) { // hide everything else on the screen auto dirs = Director::getInstance()->getRunningScene(); dirs->removeChildByName("sprite5"); dirs->removeChildByName("sprite6"); dirs->removeChildByName("sprite7"); dirs->removeChildByName("sprite8"); dirs->removeChildByName("point00"); dirs->removeChildByName("pointXY"); dirs->removeChildByName("pointX"); dirs->removeChildByName("pointY"); auto newSprite00 = Sprite::create("Blue_Front1.png"); newSprite00->setPosition(100, 256); newSprite00->setName("sprite9"); newSprite00->setAnchorPoint(Vec2(0,0)); dirs->addChild(newSprite00,1); auto point00 = Sprite::create("dot.png"); point00->setName("point00"); point00->setPosition(newSprite00->getPosition()); dirs->addChild(point00,2); auto newSprite01 = Sprite::create("Blue_Front1.png"); newSprite01->setPosition(250, 256); newSprite01->setName("sprite10"); newSprite01->setAnchorPoint(Vec2(0,1)); dirs->addChild(newSprite01,1); auto point01 = Sprite::create("dot.png"); point01->setName("point01"); point01->setPosition(newSprite01->getPosition()); dirs->addChild(point01,2); auto newSprite10 = Sprite::create("Blue_Front1.png"); newSprite10->setPosition(400, 256); newSprite10->setName("sprite11"); newSprite10->setAnchorPoint(Vec2(1,0)); dirs->addChild(newSprite10,1); auto point10 = Sprite::create("dot.png"); point10->setName("point10"); point10->setPosition(newSprite10->getPosition()); dirs->addChild(point10,2); auto newSprite11 = Sprite::create("Blue_Front1.png"); newSprite11->setPosition(550, 256); newSprite11->setName("sprite12"); newSprite11->setAnchorPoint(Vec2(1,1)); dirs->addChild(newSprite11,1); auto point11 = Sprite::create("dot.png"); point11->setName("point11"); point11->setPosition(newSprite11->getPosition()); dirs->addChild(point11,2); auto newSprite22 = Sprite::create("Blue_Front1.png"); newSprite22->setPosition(700, 256); newSprite22->setName("sprite13"); newSprite22->setAnchorPoint(Vec2(0.5,0.5)); dirs->addChild(newSprite22,1); auto point22 = Sprite::create("dot.png"); point22->setName("point22"); point22->setPosition(newSprite22->getPosition()); dirs->addChild(point22,2); auto anode = dirs->getChildByName("menuNode"); auto bnode = anode->getChildByName("menu"); auto cnode = bnode->getChildByName("menuItem6"); cnode->setVisible(false); auto dnode = bnode->getChildByName("menuItem7"); dnode->setVisible(true); }); auto menuItem7 = MenuItemFont::create("Next: Skew a Sprite"); menuItem7->setFontNameObj("Marker Felt.ttf"); menuItem7->setFontSizeObj(32); menuItem7->setName("menuItem7"); menuItem7->setVisible(false); menuItem7->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)); menuItem7->setCallback([&](cocos2d::Ref *sender) { // hide everything else on the screen auto dirs = Director::getInstance()->getRunningScene(); dirs->removeChildByName("sprite9"); dirs->removeChildByName("sprite10"); dirs->removeChildByName("sprite11"); dirs->removeChildByName("sprite12"); dirs->removeChildByName("sprite13"); dirs->removeChildByName("point00"); dirs->removeChildByName("point01"); dirs->removeChildByName("point10"); dirs->removeChildByName("point11"); dirs->removeChildByName("point22"); auto newSprite = Sprite::create("Blue_Front1.png"); newSprite->setPosition(100, 256); newSprite->setName("sprite14"); newSprite->setAnchorPoint(Vec2(0.5,0.5)); dirs->addChild(newSprite,1); auto pointN = Sprite::create("dot.png"); pointN->setName("pointN"); pointN->setPosition(newSprite->getPosition()); dirs->addChild(pointN,2); auto newSpriteSkewX = Sprite::create("Blue_Front1.png"); newSpriteSkewX->setPosition(250, 256); newSpriteSkewX->setName("sprite15"); newSpriteSkewX->setAnchorPoint(Vec2(0.5,0.5)); newSpriteSkewX->setSkewX(20.0f); dirs->addChild(newSpriteSkewX,1); auto pointX = Sprite::create("dot.png"); pointX->setName("pointX"); pointX->setPosition(newSpriteSkewX->getPosition()); dirs->addChild(pointX,2); auto newSpriteSkewY = Sprite::create("Blue_Front1.png"); newSpriteSkewY->setPosition(400, 256); newSpriteSkewY->setName("sprite16"); newSpriteSkewY->setAnchorPoint(Vec2(0.5,0.5)); newSpriteSkewY->setSkewY(20.0f); dirs->addChild(newSpriteSkewY,1); auto pointY = Sprite::create("dot.png"); pointY->setName("pointY"); pointY->setPosition(newSpriteSkewY->getPosition()); dirs->addChild(pointY,2); auto anode = dirs->getChildByName("menuNode"); auto bnode = anode->getChildByName("menu"); auto cnode = bnode->getChildByName("menuItem7"); cnode->setVisible(false); auto dnode = bnode->getChildByName("menuItem8"); dnode->setVisible(true); }); auto menuItem8 = MenuItemFont::create("Next: Rotate a Sprite"); menuItem8->setFontNameObj("Marker Felt.ttf"); menuItem8->setFontSizeObj(32); menuItem8->setName("menuItem8"); menuItem8->setVisible(false); menuItem8->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)); menuItem8->setCallback([&](cocos2d::Ref *sender) { // hide everything else on the screen auto dirs = Director::getInstance()->getRunningScene(); dirs->removeChildByName("sprite14"); dirs->removeChildByName("sprite15"); dirs->removeChildByName("sprite16"); dirs->removeChildByName("pointN"); dirs->removeChildByName("pointX"); dirs->removeChildByName("pointY"); auto newSprite = Sprite::create("Blue_Front1.png"); newSprite->setPosition(100, 256); newSprite->setName("sprite17"); newSprite->setAnchorPoint(Vec2(0.5,0.5)); dirs->addChild(newSprite,1); auto point00 = Sprite::create("dot.png"); point00->setName("point00"); point00->setPosition(newSprite->getPosition()); dirs->addChild(point00,2); auto newSpriteRotateP20 = Sprite::create("Blue_Front1.png"); newSpriteRotateP20->setPosition(250, 256); newSpriteRotateP20->setName("sprite18"); newSpriteRotateP20->setAnchorPoint(Vec2(0.5,0.5)); newSpriteRotateP20->setRotation(20.0f); dirs->addChild(newSpriteRotateP20,1); auto pointP20 = Sprite::create("dot.png"); pointP20->setName("pointP20"); pointP20->setPosition(newSpriteRotateP20->getPosition()); dirs->addChild(pointP20,2); auto newSpriteRotateN20 = Sprite::create("Blue_Front1.png"); newSpriteRotateN20->setPosition(400, 256); newSpriteRotateN20->setName("sprite19"); newSpriteRotateN20->setAnchorPoint(Vec2(0.5,0.5)); newSpriteRotateN20->setRotation(-20.0f); dirs->addChild(newSpriteRotateN20,1); auto pointN20 = Sprite::create("dot.png"); pointN20->setName("pointN20"); pointN20->setPosition(newSpriteRotateN20->getPosition()); dirs->addChild(pointN20,2); auto newSpriteRotateP60 = Sprite::create("Blue_Front1.png"); newSpriteRotateP60->setPosition(550, 256); newSpriteRotateP60->setName("sprite20"); newSpriteRotateP60->setAnchorPoint(Vec2(0.5,0.5)); newSpriteRotateP60->setRotation(60.0f); dirs->addChild(newSpriteRotateP60,1); auto pointP60 = Sprite::create("dot.png"); pointP60->setName("pointP60"); pointP60->setPosition(newSpriteRotateP60->getPosition()); dirs->addChild(pointP60,2); auto newSpriteRotateN60 = Sprite::create("Blue_Front1.png"); newSpriteRotateN60->setPosition(700, 256); newSpriteRotateN60->setName("sprite21"); newSpriteRotateN60->setAnchorPoint(Vec2(0.5,0.5)); newSpriteRotateN60->setRotation(-60.0f); dirs->addChild(newSpriteRotateN60,1); auto pointN60 = Sprite::create("dot.png"); pointN60->setName("pointN60"); pointN60->setPosition(newSpriteRotateN60->getPosition()); dirs->addChild(pointN60,2); auto anode = dirs->getChildByName("menuNode"); auto bnode = anode->getChildByName("menu"); auto cnode = bnode->getChildByName("menuItem8"); cnode->setVisible(false); auto dnode = bnode->getChildByName("menuItem9"); dnode->setVisible(true); }); auto menuItem9 = MenuItemFont::create("Next: Change the Color of a Sprite"); menuItem9->setFontNameObj("Marker Felt.ttf"); menuItem9->setFontSizeObj(32); menuItem9->setName("menuItem9"); menuItem9->setVisible(false); menuItem9->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)); menuItem9->setCallback([&](cocos2d::Ref *sender) { // hide everything else on the screen auto dirs = Director::getInstance()->getRunningScene(); dirs->removeChildByName("sprite18"); dirs->removeChildByName("sprite19"); dirs->removeChildByName("sprite20"); dirs->removeChildByName("sprite21"); dirs->removeChildByName("point00"); dirs->removeChildByName("pointP20"); dirs->removeChildByName("pointN20"); dirs->removeChildByName("pointP60"); dirs->removeChildByName("pointN60"); auto newSprite = Sprite::create("Blue_Front1.png"); newSprite->setPosition(100, 256); newSprite->setName("sprite30"); newSprite->setAnchorPoint(Vec2(0.5,0.5)); dirs->addChild(newSprite,1); auto newSprite2 = Sprite::create("Blue_Front1.png"); newSprite2->setPosition(200, 256); newSprite2->setName("sprite31"); newSprite2->setAnchorPoint(Vec2(0.5,0.5)); newSprite2->setColor(Color3B(155, 200, 50)); dirs->addChild(newSprite2,1); auto newSprite3 = Sprite::create("Blue_Front1.png"); newSprite3->setPosition(300, 256); newSprite3->setName("sprite32"); newSprite3->setAnchorPoint(Vec2(0.5,0.5)); newSprite3->setColor(Color3B(10, 230, 100)); dirs->addChild(newSprite3,1); auto newSprite4 = Sprite::create("Blue_Front1.png"); newSprite4->setPosition(400, 256); newSprite4->setName("sprite33"); newSprite4->setAnchorPoint(Vec2(0.5,0.5)); newSprite4->setColor(Color3B(100, 101, 230)); dirs->addChild(newSprite4,1); auto anode = dirs->getChildByName("menuNode"); auto bnode = anode->getChildByName("menu"); auto cnode = bnode->getChildByName("menuItem9"); cnode->setVisible(false); auto dnode = bnode->getChildByName("menuItem10"); dnode->setVisible(true); }); auto menuItem10 = MenuItemFont::create("Next: Change the Color of a Sprite"); menuItem10->setFontNameObj("Marker Felt.ttf"); menuItem10->setFontSizeObj(32); menuItem10->setName("menuItem10"); menuItem10->setVisible(false); menuItem10->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)); menuItem10->setCallback([&](cocos2d::Ref *sender) { // hide everything else on the screen auto dirs = Director::getInstance()->getRunningScene(); dirs->removeChildByName("sprite30"); dirs->removeChildByName("sprite31"); dirs->removeChildByName("sprite32"); dirs->removeChildByName("sprite33"); auto newSprite = Sprite::create("Blue_Front1.png"); newSprite->setPosition(100, 256); newSprite->setName("sprite34"); newSprite->setAnchorPoint(Vec2(0.5,0.5)); newSprite->setOpacity(0.0f); dirs->addChild(newSprite,1); auto newSprite2 = Sprite::create("Blue_Front1.png"); newSprite2->setPosition(200, 256); newSprite2->setName("sprite35"); newSprite2->setAnchorPoint(Vec2(0.5,0.5)); newSprite2->setOpacity(99); dirs->addChild(newSprite2,1); auto newSprite3 = Sprite::create("Blue_Front1.png"); newSprite3->setPosition(300, 256); newSprite3->setName("sprite36"); newSprite3->setAnchorPoint(Vec2(0.5,0.5)); newSprite3->setOpacity(89); dirs->addChild(newSprite3,1); auto newSprite4 = Sprite::create("Blue_Front1.png"); newSprite4->setPosition(400, 256); newSprite4->setName("sprite37"); newSprite4->setAnchorPoint(Vec2(0.5,0.5)); newSprite4->setOpacity(79); dirs->addChild(newSprite4,1); auto anode = dirs->getChildByName("menuNode"); auto bnode = anode->getChildByName("menu"); auto cnode = bnode->getChildByName("menuItem10"); cnode->setVisible(false); //auto dnode = bnode->getChildByName("menuItem10"); //dnode->setVisible(true); }); auto menu = Menu::create(menuItem1, menuItem2, menuItem3, menuItem4, menuItem5, menuItem6, menuItem7, menuItem8, menuItem9, menuItem10, NULL); menu->setName("menu"); menuNode->addChild(menu, 1); menu->setPosition(Vec2::ZERO); scene->addChild(menuNode, 2); // return the scene return scene; }
// on "init" you need to initialize your instance bool Game::init() { ////////////////////////////// // 1. super init first if ( !Layer::init() ) { return false; } Size visibleSize = Director::getInstance()->getVisibleSize(); float width = visibleSize.width; float height = visibleSize.height; Vec2 origin = Director::getInstance()->getVisibleOrigin(); ///////////////////////////// // 2. add a menu item with "X" image, which is clicked to quit the program // you may modify it. // add a "close" icon to exit the progress. it's an autorelease object auto closeItem = MenuItemImage::create( "Close1.png", "Close2.png", CC_CALLBACK_1(Game::menuCloseCallback, this)); closeItem->setPosition(Vec2(origin.x + 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); ///////////////////////////// // 3. add your codes below... this->drawWalls(width, height); this->drawPaddles(width, height); this->redrawPaddles(width, height); this->ball = Sprite::create("ball.png"); float ball_scale = (width / 32) / (WIDTH(this->ball)); this->ball->setScaleX(ball_scale); this->ball->setScaleY(ball_scale); this->addChild(this->ball); this->resetBall(); this->updateBall(); auto middleLine = Sprite::create("middleLine.png"); middleLine->setPosition(Vec2(origin.x + width / 2, origin.y + height / 2)); middleLine->setScaleY(height / middleLine->getContentSize().height); this->addChild(middleLine); this->label1 = Label::createWithTTF("A", "fonts/Marker Felt.ttf", 24); this->label1->setPosition(Vec2(width / 2 - 100, origin.y + height - WALL_HEIGHT - this->label1->getContentSize().height)); this->addChild(this->label1, 1); this->label2 = Label::createWithTTF("B", "fonts/Marker Felt.ttf", 24); this->label2->setPosition(Vec2(width / 2 + 100, origin.y + height - WALL_HEIGHT - this->label2->getContentSize().height)); this->addChild(this->label2, 1); this->updateScore(); this->p1UP = Rect(origin.x, origin.y + height / 2, origin.x + 150, origin.y + height); this->p1DOWN = Rect(origin.x, origin.y, origin.x + 150, origin.y + height / 2); this->p2UP = Rect(origin.x + width - 150, origin.y + height / 2, origin.x + width, origin.y + height); this->p2DOWN = Rect(origin.x + width - 150, origin.y, origin.x + width, origin.y + height / 2); auto listener1 = EventListenerTouchOneByOne::create(); listener1->setSwallowTouches(true); listener1->onTouchBegan = [](Touch* touch, Event* event){ auto game = static_cast<Game*>(event->getCurrentTarget()); Point location = game->convertToNodeSpace(touch->getLocation()); float height = Director::getInstance()->getVisibleSize().height; if (game->p1UP.containsPoint(location)) { game->player1Paddley += height / 15; } else if (game->p1DOWN.containsPoint(location)) { game->player1Paddley -= height / 15; } else if (game->p2UP.containsPoint(location)) { game->player2Paddley += height / 15; } else if (game->p2DOWN.containsPoint(location)) { game->player2Paddley -= height / 15; } return false; }; listener1->onTouchMoved = [](Touch* touch, Event* event){ }; listener1->onTouchEnded = [=](Touch* touch, Event* event){ }; _eventDispatcher->addEventListenerWithSceneGraphPriority(listener1, this); this->schedule(schedule_selector(Game::update)); return true; }
void ModelDataModel::setScale(const Vector3f &scale) { setScaleX(scale[0]); setScaleY(scale[1]); setScaleZ(scale[2]); }
bool CLostScene::init() { if (!Layer::init()) { return false; } Size visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); auto LostBG = Sprite::create("picture/shibai.jpg"); Size LostBGSize = LostBG->getContentSize(); LostBG->setScaleX(visibleSize.width/LostBGSize.width); LostBG->setScaleY(visibleSize.height/LostBGSize.height); LostBG->setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y)); this->addChild(LostBG); #if CC_TARGET_PLATFORM == CC_PLATFORM_WIN32 auto shibai = Label::createWithTTF(Tools::Unicode2Utf8(L"失 败"),"fonts/msyh.ttc",38); #else auto shibai = Label::createWithTTF("失 败","fonts/msyh.ttc",38); #endif shibai->setColor(Color3B(255,0,0)); shibai->setPosition(500,500); this->addChild(shibai); auto again = MenuItemImage::create( "picture/blue1_menu.png", "picture/blue2_menu.png", CC_CALLBACK_1(CLostScene::menuCloseCallback,this)); again->setScale(0.5f); again->setPosition(Vec2(origin.x + visibleSize.width - again->getContentSize().width/2-310 , origin.y + again->getContentSize().height/2+330)); #if CC_TARGET_PLATFORM == CC_PLATFORM_WIN32 auto againLable = Label::createWithTTF(Tools::Unicode2Utf8(L"再来一次"),"fonts/msyh.ttc",24); #else auto againLable = Label::createWithTTF("再来一次","fonts/msyh.ttc",24); #endif againLable->setPosition(Vec2(again->getPositionX(),again->getPositionY())); this->addChild(againLable); auto quit = MenuItemImage::create( "picture/blue1_menu.png", "picture/blue2_menu.png", CC_CALLBACK_1(CLostScene::menuCloseCallback1,this)); quit->setScale(0.5f); quit->setPosition(Vec2(origin.x + visibleSize.width - quit->getContentSize().width/2-310 , origin.y + quit->getContentSize().height/2+160)); quit->setPosition(Vec2(origin.x + visibleSize.width - quit->getContentSize().width/2-310 , origin.y + quit->getContentSize().height/2+160)); #if CC_TARGET_PLATFORM == CC_PLATFORM_WIN32 auto quitLable = Label::createWithTTF(Tools::Unicode2Utf8(L"退出"),"fonts/msyh.ttc",24); #else auto quitLable = Label::createWithTTF("退出","fonts/msyh.ttc",24); #endif quitLable->setPosition(Vec2(quit->getPositionX(),quit->getPositionY())); this->addChild(quitLable); auto menu = Menu::create(again,quit, NULL); menu->setPosition(Vec2::ZERO); this->addChild(menu, 1); return true; }
bool WelcomeScene::init() { if ( !Layer::init() ) { return false; } Size visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); const float SCALE_TO_DEVICE = Director::getInstance()->getVisibleSize().width / DES_RES_X; auto welcomePic=Sprite::create("Starter_bg.png"); welcomePic->setPosition(Point(visibleSize.width/2+origin.x, visibleSize.height/2+origin.y)); welcomePic->setScaleX(visibleSize.width/welcomePic->getContentSize().width); welcomePic->setScaleY(visibleSize.height/welcomePic->getContentSize().height); this->addChild(welcomePic); auto gameTitleLabel= Label::createWithTTF("Halloween\n Candy Rush", "FEASFBRG.TTF", visibleSize.width * SCORE_FONT); gameTitleLabel->setColor(Color3B::YELLOW); gameTitleLabel->setPosition(Point(visibleSize.width/2+origin.x, visibleSize.height*0.75+origin.y)); this->addChild(gameTitleLabel,10); float scale_x=0.375; auto pp1=Sprite::create(); pp1->setScale(SCALE_TO_DEVICE); pp1->setPosition(Point(visibleSize.width*0.2+origin.x, visibleSize.height*scale_x+origin.y)); this->addChild(pp1,5); auto pp2=Sprite::create(); pp2->setScale(SCALE_TO_DEVICE); pp2->setPosition(Point(visibleSize.width*0.4+origin.x, visibleSize.height*scale_x+origin.y)); this->addChild(pp2,5); auto pp3=Sprite::create(); pp3->setScale(SCALE_TO_DEVICE); pp3->setPosition(Point(visibleSize.width*0.6+origin.x, visibleSize.height*scale_x+origin.y)); this->addChild(pp3,5); auto pp4=Sprite::create(); pp4->setScale(SCALE_TO_DEVICE); pp4->setPosition(Point(visibleSize.width*0.8+origin.x, visibleSize.height*scale_x+origin.y)); this->addChild(pp4,5); auto coin=Sprite::create("Candy (1).png"); coin->setScale(SCALE_TO_DEVICE); coin->setPosition(visibleSize.width*0.5+origin.x, visibleSize.height*0.5+origin.y); Vector<SpriteFrame*> an0(3); an0.pushBack(SpriteFrame::create("Candy (1).png", Rect(0,0,64,43))); an0.pushBack(SpriteFrame::create("Candy (2) 2.png", Rect(0,0,96,63))); an0.pushBack(SpriteFrame::create("Candy (3) 2.png", Rect(0,0,128,84))); auto ani0=Animation::createWithSpriteFrames(an0,0.2f); auto anim_00=Animate::create(ani0); auto anim_0=RepeatForever::create(anim_00); coin->runAction(anim_0); this->addChild(coin,4); for (float x=0;x<1.1;x=x+0.25) { for (float y=0;y<1.1;y=y+0.25) { if (y==0.25||y==0.5) { float pos_x=visibleSize.width*x+origin.x; float pos_y=visibleSize.height*y+origin.y; candy_matrix(pos_x, pos_y); } } } Vector<SpriteFrame*> an1(4); an1.pushBack(SpriteFrame::create("Idle (1).png", Rect(0,0,140,145))); an1.pushBack(SpriteFrame::create("Idle (2).png", Rect(0,0,140,145))); an1.pushBack(SpriteFrame::create("Idle (3).png", Rect(0,0,140,145))); an1.pushBack(SpriteFrame::create("Idle (4).png", Rect(0,0,140,145))); auto ani1=Animation::createWithSpriteFrames(an1,0.1f); auto anim_11=Animate::create(ani1); auto anim_1=RepeatForever::create(anim_11); pp1->runAction(anim_1); Vector<SpriteFrame*> an2(4); an2.pushBack(SpriteFrame::create("Launch Idle (1).png", Rect(0,0,111,139))); an2.pushBack(SpriteFrame::create("Launch Idle (2).png", Rect(0,0,101,139))); an2.pushBack(SpriteFrame::create("Launch Idle (3).png", Rect(0,0,101,139))); an2.pushBack(SpriteFrame::create("Launch Idle (4).png", Rect(0,0,101,139))); auto ani2=Animation::createWithSpriteFrames(an2,0.1f); auto anim_22=Animate::create(ani2); auto anim_2=RepeatForever::create(anim_22); pp2->runAction(anim_2); Vector<SpriteFrame*> an3(4); an3.pushBack(SpriteFrame::create("Launch Idle (1) 2.png", Rect(0,0,140,146))); an3.pushBack(SpriteFrame::create("Launch Idle (2) 2.png", Rect(0,0,140,146))); an3.pushBack(SpriteFrame::create("Launch Idle (3) 2.png", Rect(0,0,140,146))); an3.pushBack(SpriteFrame::create("Launch Idle (4) 2.png", Rect(0,0,140,146))); auto ani3=Animation::createWithSpriteFrames(an3,0.1f); auto anim_33=Animate::create(ani3); auto anim_3=RepeatForever::create(anim_33); pp3->runAction(anim_3); Vector<SpriteFrame*> an4(4); an4.pushBack(SpriteFrame::create("Launch Idle (1) 3.png", Rect(0,0,133,148))); an4.pushBack(SpriteFrame::create("Launch Idle (2) 3.png", Rect(0,0,133,148))); an4.pushBack(SpriteFrame::create("Launch Idle (3) 3.png", Rect(0,0,133,148))); an4.pushBack(SpriteFrame::create("Launch Idle (4) 3.png", Rect(0,0,133,148))); auto ani4=Animation::createWithSpriteFrames(an4,0.1f); auto anim_44=Animate::create(ani4); auto anim_4=RepeatForever::create(anim_44); pp4->runAction(anim_4); this->scheduleOnce(schedule_selector(WelcomeScene::GoToMainMenuScene), WELCOME_SCREEN_DISP_TIME); return true; }
cocos2d::ui::Button* GameLayer::create_button(std::string text, BoolFuncNoArgs cb, bool start_disabled, ButtonState* btn_state) { auto param = ui::LinearLayoutParameter::create(); param->setGravity(ui::LinearLayoutParameter::LinearGravity::CENTER_HORIZONTAL); auto disable_button = [](ui::Button* button) { button->setTitleColor(Color3B::GRAY); button->setTouchEnabled(false); button->setPressedActionEnabled(false); }; auto btn = ui::Button::create("main_UI_export_10_x4.png", "", "", ui::TextureResType::PLIST); btn->setTitleFontName(menu_font); btn->setTitleFontSize(menu_fontsize); btn->setTitleColor(Color3B::BLACK); btn->getTitleRenderer()->getTexture()->setAliasTexParameters(); btn->setColor(Color3B(114, 160, 72)); btn->getVirtualRenderer()->setScale(sx(1.0f)); btn->setScaleX(sx(1.0f)); btn->setScaleY(sy(1.0f)); param->setMargin(ui::Margin(0, sy(15.0f)*btn->getScaleY(), 0, sy(15.0f)*btn->getScaleY())); btn->setLayoutParameter(param); btn->setTouchEnabled(true); btn->setPressedActionEnabled(true); if (start_disabled) { disable_button(btn); }; btn->setTitleText(text); if (btn_state) { //update the text btn_state->swap_state(btn, btn_state->current); }; btn->addTouchEventListener( [btn_state, cb, btn, disable_button](Ref* ref, ui::Widget::TouchEventType event) { if (event == ui::Widget::TouchEventType::ENDED) { if (!cb()) { disable_button(btn); }; if (btn_state) { btn_state->current = !btn_state->current; btn_state->swap_state(btn, btn_state->current); }; } } ); return btn; };
// on "init" you need to initialize your instance bool HelloWorld::init() { ////////////////////////////// // 1. super init first if ( !Layer::init() ) { return false; } Size visibleSize = Director::getInstance()->getVisibleSize(); Point origin = Director::getInstance()->getVisibleOrigin(); ///////////////////////////// // 2. add a menu item with "X" image, which is clicked to quit the program // you may modify it. // add a "close" icon to exit the progress. it's an autorelease object auto closeItem = MenuItemImage::create( "CloseNormal.png", "CloseSelected.png", CC_CALLBACK_1(HelloWorld::menuCloseCallback, this)); closeItem->setPosition(Point(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(Point::ZERO); this->addChild(menu, 5,40); ///////////////////////////// // 3. add your codes below... //添加定时器 schedule(schedule_selector(HelloWorld::update)); //!添加背景图片1 auto sprite = Sprite::create("images/background2.png"); sprite->setScaleX(2.5); sprite->setScaleY(2.5); // position the sprite on the center of the screen sprite->setPosition(Point(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y)); // add the sprite as a child to this layer this->addChild(sprite, 0); //!添加背景图片2 auto sprite1=Sprite::create("images/backgroundBottom.png"); sprite1->setAnchorPoint(Point(0,0)); sprite1->setPosition(0,0); this->addChild(sprite1,2); //!添加游戏准备图片 auto sprite2 =Sprite::create("images/getready.png"); sprite2->setPosition(180,500); sprite2->setVisible(false); sprite2->setScaleX(2); sprite2->setScaleY(2); this->addChild(sprite2,2,2); //!添加游戏结束图片 auto sprite3=Sprite::create("images/gameover.png"); sprite3->setScaleX(2); sprite3->setScaleY(2); sprite3->setPosition(180,500); sprite3->setVisible(false); this->addChild(sprite3,2,3); this->setOpacity(0.0f); //!添加分数面板图片 auto sprite4=Sprite::create("images/scoreboard.png"); sprite4->setScaleX(2.5); sprite4->setScaleY(2.5); sprite4->setPosition(180,350); sprite4->setVisible(false); this->addChild(sprite4,2,4); sprite4->setOpacity(0.0f); //!添加分数面板分数字体 score=0; sprintf(b,"%d",score); auto fscores=LabelTTF::create(b,"Arial",25); this->addChild(fscores,5,100); fscores->setPosition(260,370); fscores->setVisible(false); //!添加一个新分数标志 auto newsprite=Sprite::create("images/newhighscore.png"); newsprite->setScale(2); newsprite->setAnchorPoint(Point(1.5,-1.0)); fscores->addChild(newsprite,1,1); newsprite->setVisible(false); //!添加分数面板最高分字体 this->getUserScore(); sprintf(c,"%d",userScore); auto fuscores=LabelTTF::create(c,"Arial",25); fuscores->setPosition(260,320); fuscores->setVisible(false); this->addChild(fuscores,5,101); //!添加重新开始按钮 auto restartItem = MenuItemImage::create("images/pauseRestart.png","images/pauseRestart1.png",CC_CALLBACK_1(HelloWorld::restartCallBack,this)); restartItem->setPosition(100,240); restartItem->setVisible(false); restartItem->setScale(0.7); menu->addChild(restartItem,0,1992); //!添加分数 sprintf(a,"scores:%d",score); auto scores=LabelTTF::create(a,"Arial",25); scores->setPosition(180,620); this->addChild(scores,4,10); //!添加事件 auto listener =EventListenerTouchOneByOne::create(); listener->setSwallowTouches(true); listener->onTouchBegan=CC_CALLBACK_2(HelloWorld::touchEvent,this); _eventDispatcher->addEventListenerWithSceneGraphPriority(listener,this); //!添加雪花效果 auto snow=ParticleSnow::create(); auto texture=Director::getInstance()->getTextureCache(); snow->setTexture(texture->addImage("stars.png")); snow->setPosition(180,640); this->addChild(snow,2); //!添加滚动图片1 auto sbd1=Sprite::create("images/ground.png"); sbd1->setAnchorPoint(Point(0,0)); sbd1->setPosition(0,120); sbd1->setScale(2.2); this->addChild(sbd1,2,20); //!添加滚动图片2 auto sbd2=Sprite::create("images/ground.png"); sbd2->setAnchorPoint(Point(0,0)); sbd2->setPosition(360,120); sbd2->setScale(2.2); this->addChild(sbd2,2,21); //!添加游戏金币,该金币为玩家没玩一次游戏所得分数 auto goldsprite=Sprite::create("images/flappycoin.png"); goldsprite->setScale(1.5); goldsprite->setAnchorPoint(Point(1.2,0)); auto file=UserDefault::getInstance(); gameGold=file->getIntegerForKey("gameGold"); sprintf(d,"%d",gameGold); auto gold=LabelTTF::create(d,"Arial",20); gold->setPosition(45,580); gold->setAnchorPoint(Point(0,0)); gold->addChild(goldsprite); this->addChild(gold,3,25); srand(time(0)); _time=0.0f; //!设置当前状态 currState =gameReady::getInstance(); currState->enter(this); return true; }