// on "init" you need to initialize your instance bool MainScene::init() { ////////////////////////////// // 1. super init first if ( !Layer::init() ) { return false; } Size visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); auto keyboardListener = EventListenerKeyboard::create(); keyboardListener->onKeyPressed = CC_CALLBACK_2(MainScene::keyPressed, this); keyboardListener->onKeyReleased = CC_CALLBACK_2(MainScene::keyReleased, this); Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(keyboardListener, this); ///////////////////////////// // 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(MainScene::menuCloseCallback, this)); closeItem->setPosition(Vec2(origin.x + visibleSize.width - closeItem->getContentSize().width/2 , origin.y + closeItem->getContentSize().height/2)); // create menu, it's an autorelease object auto menu = Menu::create(closeItem, NULL); menu->setPosition(Vec2::ZERO); this->addChild(menu, 1); ///////////////////////////// // 3. add your codes below... // add a label shows "Hello World" // create and initialize a label auto label = LabelTTF::create("Hello World", "Arial", 24); // position the label on the center of the screen label->setPosition(Vec2(origin.x + visibleSize.width/2, origin.y + visibleSize.height - label->getContentSize().height)); // add the label as a child to this layer this->addChild(label, 1); // add "HelloWorld" splash screen" //auto sprite = Sprite::create("HelloWorld.png"); // position the sprite on the center of the screen //sprite->setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y)); // add the sprite as a child to this layer //this->addChild(sprite, 0); auto minSize = ::std::min(visibleSize.width, visibleSize.height); auto fieldSize = minSize * 0.8; auto layerColorBG = LayerColor::create(Color4B(200, 190, 180, 255), fieldSize, fieldSize); layerColorBG->setPosition(Vec2(origin.x + visibleSize.width/2 - fieldSize/2, origin.y + visibleSize.height/2 - fieldSize/2)); this->addChild(layerColorBG); auto size = board_.size(); cells_.assign(size, ::std::vector<UiCell>(size, UiCell())); const auto cellsProportion = 0.90; auto cellSize = fieldSize * cellsProportion / size; auto cellMargin = fieldSize * (1 - cellsProportion) / (size + 1); for (auto i = 0; i < size; ++i) { for (auto j = 0; j < size; ++j) { auto cellPos = Vec2(cellMargin + j * (cellSize + cellMargin), fieldSize - cellMargin - cellSize - i * (cellSize + cellMargin)); auto layerCell = LayerColor::create(Color4B(180, 190, 200, 255), cellSize, cellSize); layerCell->setPosition(cellPos); layerColorBG->addChild(layerCell); layerCell = LayerColor::create(Color4B(190, 200, 180, 0), cellSize, cellSize); layerCell->setPosition(cellPos); layerColorBG->addChild(layerCell); auto label = LabelTTF::create("", "Arial", 48); label->setPosition(Vec2(cellSize/2, cellSize/2)); layerCell->addChild(label); cells_[i][j] = { layerCell, label }; } } board_.spawnNew(); board_.spawnNew(); 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(); // TiledMapEditorで生成したマップを表示する _map = TMXTiledMap::create("TMX/stage1.tmx"); _mapLayer = _map->getLayer("layer1"); // マップのサイズ Size mapSize = Size(_map->getTileSize().width * _map->getMapSize().width, _map->getTileSize().height * _map->getMapSize().height); // スクロールビュー ScrollView *scrollView = ScrollView::create(mapSize*3); scrollView->setAnchorPoint(Vec2::ANCHOR_MIDDLE); scrollView->setPosition(Vec2(100, 100)); scrollView->setMaxScale(5.0f); scrollView->setBounceable(false); scrollView->setContentSize(mapSize*3); this->addChild(scrollView); // 中のレイヤー Layer *innerLayer = Layer::create(); scrollView->addChild(innerLayer); // スクロールビューの背景 Sprite *sprite = Sprite::create(); sprite->setTextureRect(Rect(0, 0, scrollView->getContentSize().width, scrollView->getContentSize().height)); sprite->setColor(Color3B(230,230,230)); sprite->setAnchorPoint(Vec2::ANCHOR_BOTTOM_LEFT); innerLayer->addChild(sprite); // マップを表示 _map->setScale(3); innerLayer->addChild(_map); // キャラクターを表示 _character = Sprite::create("TMX/character.png"); _character->setAnchorPoint(Vec2(0.5f, 0.25f)); _charaPos = Vec2(0, 0); _character->setPosition(_mapLayer->getPositionAt(_charaPos) + _map->getTileSize()/2); _map->addChild(_character); // サイコロボタン _isMoving = false; MenuItemLabel *dice = MenuItemLabel::create(Label::createWithSystemFont("サイコロ", "arial", 30.0f), CC_CALLBACK_1(HelloWorld::dice, this)); dice->setPosition(Vec2(600, 0)); this->addChild(Menu::create(dice, NULL)); // サイコロの目 Label *pips = Label::createWithSystemFont("-", "arial", 30.0f); pips->setPosition(Vec2(1200, 300)); pips->setTag(10); this->addChild(pips); 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 listener = EventListenerTouchOneByOne::create(); listener->setSwallowTouches(true); listener->onTouchBegan = CC_CALLBACK_2(HelloWorld::onTouchBegan, this); listener->onTouchEnded = CC_CALLBACK_2(HelloWorld::onTouchEnded, this); Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, this); ///////////////////////////// // 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(Vec2(origin.x + visibleSize.width - closeItem->getContentSize().width/2 , origin.y + closeItem->getContentSize().height/2)); // create menu, it's an autorelease object auto menu = Menu::create(closeItem, NULL); menu->setPosition(Vec2::ZERO); this->addChild(menu, 1); ///////////////////////////// // 3. add your codes below... // add a label shows "Hello World" // create and initialize a label auto label = LabelTTF::create("Hello World", "Arial", 24); // position the label on the center of the screen label->setPosition(Vec2(origin.x + visibleSize.width/2, origin.y + visibleSize.height - label->getContentSize().height)); // add the label as a child to this layer this->addChild(label, 1); player = Player::create(); player->setPosition(Vec2(origin.x + visibleSize.width / 2 , origin.y + visibleSize.height / 2)); this->addChild(player, 5); this->scheduleUpdate(); return true; }
// on "init" you need to initialize your instance bool Practice1::init() { ////////////////////////////// // 1. super init first if (!Layer::init()) { return false; } Size visibleSize = Director::getInstance()->getVisibleSize(); 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( "CloseNormal.png", "CloseSelected.png", CC_CALLBACK_1(Practice1::menuCloseCallback, this)); closeItem->setPosition(Vec2(origin.x + visibleSize.width - closeItem->getContentSize().width / 2, origin.y + closeItem->getContentSize().height / 2)); // create menu, it's an autorelease object auto menu = Menu::create(closeItem, NULL); menu->setPosition(Vec2::ZERO); this->addChild(menu, 1); ///////////////////////////// // 3. add your codes below... auto label = Label::createWithTTF("練習シーン1", "fonts/07やさしさゴシック.ttf", 24); label->setAnchorPoint(Vec2(0.0f, 0.0f)); label->setPosition(origin.x, origin.y + visibleSize.height); this->addChild(label); nowCount = Label::createWithTTF("現在のカウント: 0", "fonts/07やさしさゴシック.ttf", 24); nowCount->setPosition(origin.x + visibleSize.width/2, origin.y + visibleSize.height/2); this->addChild(nowCount); count = 0; // add this scene to update schedule //this->scheduleUpdate(); //this->schedule(schedule_selector(Practice1::updateByTimer), 1.0f); // create field // 空のスプライトを用意 float fieldWidth = visibleSize.width / 2; float fieldHeight = visibleSize.height + 100.0f; float fieldBlockWidth = fieldWidth / 8; const int fieldObjectNumber = 3; Rect fieldSizes[fieldObjectNumber] = { { 0, 0, fieldBlockWidth, fieldHeight }, { 0, 0, fieldWidth, fieldBlockWidth }, { 0, 0, fieldBlockWidth, fieldHeight }, }; Point fieldPoints[fieldObjectNumber] = { { origin.x + visibleSize.width / 2 - fieldWidth/2 - fieldBlockWidth, origin.x + visibleSize.height }, { origin.x + visibleSize.width / 2 - fieldWidth / 2, origin.x + visibleSize.height }, { origin.x + visibleSize.width / 2 + fieldWidth / 2, origin.x + visibleSize.height }, }; //for (int i = 0; i < fieldObjectNumber; ++i) for (int i = 0; i < 1; ++i) { Sprite* field = Sprite::create("HelloWorld.png"); //Sprite* field = Sprite::create(); //field->setColor(Color3B::WHITE); field->setAnchorPoint(Vec2(0, 1.0)); field->setTextureRect(fieldSizes[i]); field->setPosition(fieldPoints[i]); //auto fieldPhysics = PhysicsBody::createBox(fieldSizes[i].size); auto fieldPhysics = PhysicsBody::createBox(Size(field->getContentSize().width, field->getContentSize().height)); fieldPhysics->setDynamic(false); fieldPhysics->setRotationEnable(false); field->setPhysicsBody(fieldPhysics); this->addChild(field); } auto sprite2 = Sprite::create("EDGE(after).png"); sprite2->setPosition(Vec2(visibleSize.width / 2 + origin.x, visibleSize.height/2 + origin.y)); auto sprite2Physics = PhysicsBody::createBox(Size(sprite2->getContentSize().width, sprite2->getContentSize().height)); sprite2Physics->setDynamic(true); sprite2Physics->setRotationEnable(false); sprite2->setPhysicsBody(sprite2Physics); this->addChild(sprite2); return true; }
void CGameView::onEnter() { Layer::onEnter(); //---------------------------------------------------- //FIXME count = 0; Size visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); // add a "close" icon to exit the progress. it's an autorelease object auto closeItem = MenuItemImage::create( "CloseNormal.png", "CloseSelected.png", CC_CALLBACK_1(CGameView::menuCloseCallback, this)); closeItem->setPosition(Vec2(origin.x + visibleSize.width - closeItem->getContentSize().width / 2, origin.y + closeItem->getContentSize().height / 2)); // create menu, it's an autorelease object auto menu = Menu::create(closeItem, NULL); menu->setPosition(Vec2::ZERO); this->addChild(menu, 1); //---------------------------------------------------- log("CGameView OnEnter..."); auto lisnter = EventListenerTouchOneByOne::create(); lisnter->onTouchBegan = CC_CALLBACK_2(CGameView::onTouchBegan, this); lisnter->onTouchEnded = CC_CALLBACK_2(CGameView::onTouchEnded, this); lisnter->onTouchMoved = CC_CALLBACK_2(CGameView::onTouchMove, this); _eventDispatcher->addEventListenerWithSceneGraphPriority(lisnter, this); //-------------------------------------------------------------------- m_pPath = new CPath(); m_pDrawNode = DrawNode::create(); m_pSp = CMySprite::create(); m_pPlayer = CGamePlayer::create(); m_pShowArea = CShowArea::create(); m_pGameLogic = CGameLogic::create(); //------------------------------------ m_pSp->setPath(m_pPath); m_pSp->setPlayer(m_pPlayer); m_pSp->setShowArea(m_pShowArea); m_pSp->setVisible(false); m_pShowArea->setPath(m_pPath); m_pShowArea->setPosition(origin); m_pPlayer->m_refSp = m_pSp; m_pPlayer->setVisible(false); m_pGameLogic->m_refPath = m_pPath; m_pGameLogic->m_refPlayer = m_pPlayer; m_pGameLogic->m_refShowArea = m_pShowArea; m_pGameLogic->m_refSp = m_pSp; m_pGameLogic->setAnchorPoint(Vec2::ZERO); //---------------------------- addChild(m_pShowArea); addChild(m_pSp); addChild(m_pDrawNode); addChild(m_pGameLogic); addChild(m_pPlayer); //------------------------------------ m_oAllRander.push_back(m_pSp); m_oAllRander.push_back(m_pShowArea); m_oAllRander.push_back(m_pPath); m_oAllRander.push_back(m_pPlayer); //---------------------------------------- m_oAllRunner.push_back(m_pSp); m_oAllRunner.push_back(m_pPlayer); //------------------------------------------ CEventDispatcher::getInstrance()->regsiterEvent(EVENT_WIN, this); CEventDispatcher::getInstrance()->regsiterEvent(EVENT_TIMEOUT, this); CEventDispatcher::getInstrance()->regsiterEvent(EVENT_PLAYERDIE, this); setState(STATE_INIT); schedule(schedule_selector(CGameView::run)); }
void SpriteMainScene::initWithSubTest(int asubtest, int nNodes) { std::srand(0); _subtestNumber = asubtest; _subTest = new (std::nothrow) SubTest; _subTest->initWithSubTest(asubtest, this); auto s = Director::getInstance()->getWinSize(); _lastRenderedCount = 0; _quantityNodes = 0; MenuItemFont::setFontSize(65); auto decrease = MenuItemFont::create(" - ", CC_CALLBACK_1(SpriteMainScene::onDecrease, this)); decrease->setColor(Color3B(0,200,20)); auto increase = MenuItemFont::create(" + ", CC_CALLBACK_1(SpriteMainScene::onIncrease, this)); increase->setColor(Color3B(0,200,20)); auto menu = Menu::create(decrease, increase, nullptr); menu->alignItemsHorizontally(); menu->setPosition(Vec2(s.width/2, s.height-65)); addChild(menu, 1); auto infoLabel = Label::createWithTTF("0 nodes", "fonts/Marker Felt.ttf", 30); infoLabel->setColor(Color3B(0,200,20)); infoLabel->setPosition(Vec2(s.width/2, s.height-90)); addChild(infoLabel, 1, kTagInfoLayer); // add menu auto menuLayer = new (std::nothrow) SpriteMenuLayer(true, TEST_COUNT, SpriteMainScene::_s_nSpriteCurCase); addChild(menuLayer, 1, kTagMenuLayer); menuLayer->release(); /** * auto test menu */ auto menuAutoTest = Menu::create(); menuAutoTest->setPosition( Vec2::ZERO ); MenuItemFont::setFontName("fonts/arial.ttf"); MenuItemFont::setFontSize(24); MenuItemFont* autoTestItem = nullptr; if (SpriteMainScene::_s_autoTest) { autoTestItem = MenuItemFont::create("Auto Test On",CC_CALLBACK_1(SpriteMainScene::onAutoTest, this)); } else { autoTestItem = MenuItemFont::create("Auto Test Off",CC_CALLBACK_1(SpriteMainScene::onAutoTest, this)); } autoTestItem->setTag(1); autoTestItem->setPosition(Vec2( s.width - 90, s.height / 2)); menuAutoTest->addChild(autoTestItem); addChild( menuAutoTest, 3, kTagAutoTestMenu ); // Sub Tests MenuItemFont::setFontSize(28); auto subMenu = Menu::create(); for (int i = 1; i <= 13; ++i) { char str[10] = {0}; sprintf(str, "%d ", i); auto itemFont = MenuItemFont::create(str, CC_CALLBACK_1(SpriteMainScene::testNCallback, this)); itemFont->setTag(i); subMenu->addChild(itemFont, 10); if( i<= 4) itemFont->setColor(Color3B(200,20,20)); else if(i <= 8) itemFont->setColor(Color3B(0,200,20)); else if( i<=12) itemFont->setColor(Color3B(0,20,200)); else itemFont->setColor(Color3B::GRAY); } subMenu->alignItemsHorizontally(); subMenu->setPosition(Vec2(s.width/2, 80)); addChild(subMenu, 2); // add title label auto label = Label::createWithTTF(title(), "fonts/arial.ttf", 32); addChild(label, 1); label->setPosition(Vec2(s.width/2, s.height-50)); // subtitle std::string strSubtitle = subtitle(); if( ! strSubtitle.empty() ) { auto l = Label::createWithTTF(strSubtitle.c_str(), "fonts/Thonburi.ttf", 16); addChild(l, 9999); l->setPosition( Vec2(VisibleRect::center().x, VisibleRect::top().y - 60) ); } while(_quantityNodes < nNodes) onIncrease(this); }
bool PhysicListener::init(){ EventListenerPhysicsContact::init(); this->onContactBegin = CC_CALLBACK_1(PhysicListener::onPhysicContactBegin, this); return true; };
// on "init" you need to initialize your instance bool MainMenuScene::init() { ////////////////////////////// // 1. super init first if ( !Layer::init() ) { return false; } Size visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); bool musicOn = UserDefault::getInstance()->getBoolForKey("MusicOn",true); if(!CocosDenshion::SimpleAudioEngine::getInstance()->isBackgroundMusicPlaying()) { CocosDenshion::SimpleAudioEngine::getInstance()->preloadBackgroundMusic("audio/Fantasy Armies.mp3"); CocosDenshion::SimpleAudioEngine::getInstance()->setBackgroundMusicVolume(0.5); CocosDenshion::SimpleAudioEngine::getInstance()->stopBackgroundMusic(); if(musicOn) { CocosDenshion::SimpleAudioEngine::getInstance()->playBackgroundMusic("audio/Fantasy Armies.mp3",true); } } auto gameTitle = Label::createWithTTF("Koncentric", "fonts/Marker Felt.ttf", 100); gameTitle->setPosition(Point(visibleSize.width/2+origin.x,visibleSize.height*0.9+origin.y)); gameTitle->setColor(Color3B(100,25, 200)); auto playItem = MenuItemFont::create("Play",CC_CALLBACK_1(MainMenuScene::goToGameScene,this)); playItem->setColor(cocos2d::Color3B::BLUE); playItem->setScale(2); playItem->setPosition(Point(visibleSize.width/2+origin.x, visibleSize.height*0.6+origin.y)); auto optionItem = MenuItemFont::create("Options",CC_CALLBACK_1(MainMenuScene::goToGameScene,this)); playItem->setTag(0); optionItem->setColor(cocos2d::Color3B::BLUE); optionItem->setScale(2); optionItem->setPosition(Point(visibleSize.width/2+origin.x, visibleSize.height*0.6-playItem->getContentSize().height*2+origin.y)); optionItem->setTag(1); auto bestTimeItem = MenuItemFont::create("Best Times",CC_CALLBACK_1(MainMenuScene::goToGameScene,this)); bestTimeItem->setColor(cocos2d::Color3B::BLUE); bestTimeItem->setScale(2); bestTimeItem->setPosition(Point(visibleSize.width/2+origin.x, visibleSize.height*0.6-playItem->getContentSize().height*2-optionItem->getContentSize().height*2+origin.y)); bestTimeItem->setTag(2); ParticleSystemQuad* m_emitter = new ParticleSystemQuad(); m_emitter = ParticleFlower::create(); // m_emitter->setEmitterMode(cocos2d::ParticleSystem::Mode::RADIUS); m_emitter->setEmissionRate(20); m_emitter->setSpeed(150); // m_emitter->setColor(Color3B(50, 100, 200)); m_emitter->setStartColor(Color4F(0, 180, 200, 255)); m_emitter->setPosition(Vec2(visibleSize.width/2+origin.x,visibleSize.height*0.53+origin.y)); // m_emitter->setStartRadius(10); // m_emitter->setEndRadius(50); //m_emitter->setGravity(Vec2(0,-90)); // = kCCParticleModeGravity //m_emitter->modeA.gravity = ccp(0,-90); auto menu = Menu::create(playItem,optionItem,bestTimeItem,NULL); menu->setPosition(Point::ZERO); this->addChild(m_emitter); this->addChild(gameTitle); this->addChild(menu); return true; }
// on "init" you need to initialize your instance bool LeaderBoard::init() { //super init first if (!Layer::init()) { return false; } Size visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); auto label = Label::createWithTTF("LEADERBOARD", "fonts/Marker Felt.ttf", 44); label->setPosition(Vec2(origin.x + visibleSize.width / 2, origin.y + visibleSize.height - label->getContentSize().height)); label->setColor(ccc3(255, 215, 0)); this->addChild(label, 1); auto MainMenu = MenuItemImage::create("Mainmenu.png", "Mainmenu.png", CC_CALLBACK_1(LeaderBoard::GoToMainMenuScene, this)); MainMenu->setPosition(Vec2(visibleSize.width / 2, origin.y + visibleSize.height / 4.5)); auto menu1 = Menu::create(MainMenu, NULL); menu1->setPosition(Vec2::ZERO); this->addChild(menu1, 1); auto label2 = Label::createWithTTF("The Top 10 Scores are:", "fonts/Marker Felt.ttf", 33); label2->setPosition(Vec2(visibleSize.width / 2, origin.y + visibleSize.height / 1.2)); label2->setColor(ccc3(160, 32, 240)); this->addChild(label2, 1); auto label3 = Label::createWithTTF("1. ", "fonts/Marker Felt.ttf", 33); label3->setPosition(Vec2(visibleSize.width / 3, origin.y + visibleSize.height / 1.3)); label3->setColor(ccc3(0, 0, 0)); this->addChild(label3, 1); auto label4 = Label::createWithTTF("2. ", "fonts/Marker Felt.ttf", 33); label4->setPosition(Vec2(visibleSize.width / 3, origin.y + visibleSize.height / 1.38)); label4->setColor(ccc3(0, 0, 0)); this->addChild(label4, 1); auto label5 = Label::createWithTTF("3. ", "fonts/Marker Felt.ttf", 33); label5->setPosition(Vec2(visibleSize.width / 3, origin.y + visibleSize.height / 1.44)); label5->setColor(ccc3(0, 0, 0)); this->addChild(label5, 1); auto ExitGame = MenuItemImage::create("Exit.png", "Exit.png", CC_CALLBACK_1(LeaderBoard::menuCloseCallback, this)); ExitGame->setPosition(Vec2(visibleSize.width / 2, origin.y + visibleSize.height / 6.4)); auto menu = Menu::create(ExitGame, NULL); menu->setPosition(Vec2::ZERO); this->addChild(menu, 1); //This adds a background to the screen auto sprite = Sprite::create("Background2.png"); // position the sprite on the center of the screen sprite->setPosition(Vec2(visibleSize.width / 2 + origin.x, visibleSize.height / 2 + origin.y)); // add the sprite as a child to this layer this->addChild(sprite, 0); return true; }
NS_CC_BEGIN MeshCommand::MeshCommand() : _displayColor(1.0f, 1.0f, 1.0f, 1.0f) , _matrixPalette(nullptr) , _matrixPaletteSize(0) , _materialID(0) , _vao(0) , _material(nullptr) , _glProgramState(nullptr) , _stateBlock(nullptr) , _textureID(0) { _type = RenderCommand::Type::MESH_COMMAND; #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) // listen the event that renderer was recreated on Android/WP8 _rendererRecreatedListener = EventListenerCustom::create(EVENT_RENDERER_RECREATED, CC_CALLBACK_1(MeshCommand::listenRendererRecreated, this)); Director::getInstance()->getEventDispatcher()->addEventListenerWithFixedPriority(_rendererRecreatedListener, -1); #endif }
void GameLayer::createTouchManager() { _touchMgr = TouchManager::create(); _touchMgr->onTouch = CC_CALLBACK_1(GameLayer::onTouch, this); addChild(_touchMgr); }
bool StoreSelectLayer::init(int money) { if (!Layer::init()) { return false; } addShiledLayer(); willReduceMoney = money; Sprite * bg_sprite = Sprite::create("Select.png"); bg_sprite->setPosition(Vec2(GET_WINDOWS_SIZE/2)); this->addChild(bg_sprite); auto trueItem = MenuItemSprite::create(Sprite::create("true.png"), Sprite::create("true.png"),CC_CALLBACK_1(StoreSelectLayer::sendInform,this)); auto falseItem = MenuItemSprite::create(Sprite::create("False.png"),Sprite::create("False.png"),CC_CALLBACK_1(StoreSelectLayer::removeSelfLayer,this)); Menu * selectMenu = Menu::create(trueItem, falseItem,NULL); selectMenu->alignItemsHorizontallyWithPadding(100); selectMenu->setPosition(Vec2(bg_sprite->getContentSize().width/2, bg_sprite->getContentSize().height/6)); bg_sprite->addChild(selectMenu); return true; }
// on "init" you need to initialize your instance bool MainMenuScene::init() { ////////////////////////////// // 1. super init first if ( !Layer::init() ) { return false; } Size visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); auto backgroundSprite = Sprite::create( "Background.png" ); backgroundSprite->setPosition( Point( visibleSize.width / 2 + origin.x, visibleSize.height / 2 + origin.y ) ); this->addChild( backgroundSprite ); auto titleSprite = Sprite::create( "Title.png" ); titleSprite->setPosition( Point( visibleSize.width / 2 + origin.x, visibleSize.height - titleSprite->getContentSize( ).height ) ); this->addChild( titleSprite ); auto playItem = MenuItemImage::create( "Play Button.png", "Play Button Clicked.png", CC_CALLBACK_1( MainMenuScene::GoToGameScene, this ) ); playItem->setPosition( Point( visibleSize.width / 2 + origin.x, visibleSize.height / 2 + origin.y ) ); auto menu = Menu::create( playItem, NULL ); menu->setPosition( Point::ZERO ); this->addChild( menu ); return true; }
bool rankBirdLayer::init() { if (!Layer::init()) { return false; } Size visibleSize=Director::getInstance()->getVisibleSize(); Point origin=Director::getInstance()->getVisibleOrigin(); Sprite *backGround=Sprite::create("night.png"); backGround->setAnchorPoint(Point(0,0)); backGround->setPosition(Point(origin.x,origin.y+visibleSize.height-backGround->getContentSize().height)); this->addChild(backGround,0); Sprite *floor=Sprite::create("floor.png"); floor->setAnchorPoint(Point(0,0)); floor->setPosition(0,0); this->addChild(floor); floor->runAction(RepeatForever::create(Sequence::create(MoveTo::create(0.5, Point(-120,0)),MoveTo::create(0,Point(0,0)), NULL))); Sprite *rank=Sprite::create("rankBackground.png"); rank->setPosition(270,530); this->addChild(rank); Sprite *title=Sprite::create("rankBird.png"); title->setPosition(270,850); this->addChild(title,1); load(); MenuItemImage *menuItem=MenuItemImage::create("menu.png", "menu_off.png", CC_CALLBACK_1(rankBirdLayer::menuCallBack0, this)); menuItem->setPosition(80,50); MenuItemImage *nextItem=MenuItemImage::create("next.png", "next_off.png", CC_CALLBACK_1(rankBirdLayer::menuCallBack1, this)); nextItem->setPosition(460,50); Menu *menu=Menu::create(menuItem,nextItem, NULL); menu->setPosition(Point::ZERO); this->addChild(menu,10); //排行的显示 int *tempBird= new int[5]; for (int i=0; i<5; i++) { std::string score; std::string number=StringUtils::format("%d",(i+1)); //创建string tempBird[i]=atoi(scoreBird[i].c_str());// atoi(const char *) 转换为int; .c_str()将std::string转换为char * if (tempBird[i]==0) { score="-"; } else { score=scoreBird[i]; } labels=Label::createWithTTF(number, "FZKATJW.ttf", 60,Size::ZERO,TextHAlignment::LEFT,TextVAlignment::TOP); rank->addChild(labels,2); labels->setPosition(Point(90,280-(50*i))); labels->enableOutline(Color4B(187,187,187,255),2); labels=Label::createWithTTF(score, "FZKATJW.ttf", 60,Size::ZERO,TextHAlignment::LEFT,TextVAlignment::TOP); rank->addChild(labels,2); labels->setPosition(Point(315,280-(50*i))); labels->enableOutline(Color4B(187,187,187,255),2); } return true; }
bool MainMenuLayer::init() { if ( !Layer::init() ) { return false; } Size winSize = Director::getInstance()->getWinSize(); // bind touch event auto touchListener = EventListenerTouchOneByOne::create(); touchListener->onTouchBegan = CC_CALLBACK_2(MainMenuLayer::onTouchBegan, this); touchListener->onTouchMoved = CC_CALLBACK_2(MainMenuLayer::onTouchMoved, this); touchListener->onTouchEnded = CC_CALLBACK_2(MainMenuLayer::onTouchEnded, this); _eventDispatcher->addEventListenerWithSceneGraphPriority(touchListener, this); // add scene auto rootNode = CSLoader::createNode("MainMenuScene.csb"); m_pAnimate = CSLoader::createTimeline("MainMenuScene.csb"); rootNode->runAction(m_pAnimate); m_pAnimate->pause(); this->addChild(rootNode, ZORDER_MAINMENULAYER_MAINLAYER); // get node auto nodePlayer = dynamic_cast<Node*>(rootNode->getChildByName("FileNode_Player")); m_pPlayerAnimate = CSLoader::createTimeline("MainMenuPlayer.csb"); nodePlayer->runAction(m_pPlayerAnimate); m_pPlayerAnimate->pause(); auto nodeUp = dynamic_cast<Node*>(rootNode->getChildByName("Node_Up")); auto nodeDown = dynamic_cast<Node*>(rootNode->getChildByName("Node_Down")); // get text auto textGameTitle = dynamic_cast<Text*>(nodeUp->getChildByName("Text_GameTitle")); auto textPlay = dynamic_cast<Text*>(rootNode->getChildByName("Text_Play")); auto textHighscore = dynamic_cast<Text*>(nodeUp->getChildByName("Text_Highscore")); auto textGoldNumber = dynamic_cast<Text*>(nodeUp->getChildByName("Node_GoldNumber")->getChildByName("Text_GoldNumber")); // get button auto buttonSetting = dynamic_cast<Button*>(nodeUp->getChildByName("Button_Setting")); buttonSetting->addClickEventListener(CC_CALLBACK_1(MainMenuLayer::menuCallback_Setting, this)); auto buttonSignIn = dynamic_cast<Button*>(nodeDown->getChildByName("Button_SignIn")); buttonSignIn->addClickEventListener(CC_CALLBACK_1(MainMenuLayer::menuCallback_SignIn, this)); auto buttonAchievement = dynamic_cast<Button*>(nodeDown->getChildByName("Button_Achievement")); buttonAchievement->addClickEventListener(CC_CALLBACK_1(MainMenuLayer::menuCallback_Achievement, this)); auto buttonLeaderboard = dynamic_cast<Button*>(nodeDown->getChildByName("Button_Leaderboard")); buttonLeaderboard->addClickEventListener(CC_CALLBACK_1(MainMenuLayer::menuCallback_Leaderboard, this)); auto buttonPurchaseNoAd = dynamic_cast<Button*>(nodeDown->getChildByName("Button_Purchase_noAd")); buttonPurchaseNoAd->addClickEventListener(CC_CALLBACK_1(MainMenuLayer::menuCallback_PurchaseNoAd, this)); auto buttonUpgrade = dynamic_cast<Button*>(rootNode->getChildByName("Button_Upgrade")); buttonUpgrade->addClickEventListener(CC_CALLBACK_1(MainMenuLayer::menuCallback_Upgrade, this)); auto buttonReload = dynamic_cast<Button*>(rootNode->getChildByName("Button_Reload")); buttonReload->addClickEventListener(CC_CALLBACK_1(MainMenuLayer::menuCallback_Reload, this)); auto buttonPurchase = dynamic_cast<Button*>(rootNode->getChildByName("Button_TestPurchase")); buttonPurchase->addClickEventListener(CC_CALLBACK_1(MainMenuLayer::menuCallback_Purchase, this)); auto buttonReset = dynamic_cast<Button*>(rootNode->getChildByName("Button_ResetGameCenter")); buttonReset->addClickEventListener(CC_CALLBACK_1(MainMenuLayer::menuCallback_Reset, this)); // set button #if DEBUG_FLAG == 0 buttonReload->setVisible(false); buttonPurchase->setVisible(false); buttonReset->setVisible(false); #endif if (CSCClass::CSC_IOSHelper::GameCenter_isAuthenticated()) { buttonAchievement->setPositionY(10); buttonLeaderboard->setPositionY(10); buttonSignIn->setPositionY(-200); } else { buttonAchievement->setPositionY(-200); buttonLeaderboard->setPositionY(-200); buttonSignIn->setPositionY(10); auto listener = EventListenerCustom::create(EVENT_GAMECENTER_AUTHENTICATED, [=](EventCustom* event) { // change game center buttons when authenticated buttonAchievement->runAction(MoveTo::create(0.5f, cocos2d::Point(buttonAchievement->getPositionX(), 10))); buttonLeaderboard->runAction(MoveTo::create(0.5f, cocos2d::Point(buttonLeaderboard->getPositionX(), 10))); buttonSignIn->runAction(MoveTo::create(0.5f, cocos2d::Point(buttonSignIn->getPositionX(), -200))); }); _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); } if (!m_pGameMediator->getIsAd()) { buttonPurchaseNoAd->setPositionY(-200); } else { #if IAPTEST_FLAG == 1 CSCClass::CSC_IOSHelper::IAP_requestAllPurchasedProducts(true); #else CSCClass::CSC_IOSHelper::IAP_requestAllPurchasedProducts(false); #endif auto listener = EventListenerCustom::create(EVENT_RESTORED + "com.reallycsc.endlesslove.adremove", [=](EventCustom* event) { m_pGameMediator->setIsAd(false); m_pGameMediator->setIsGuidelineForever(true); buttonPurchaseNoAd->runAction(MoveTo::create(0.5f, Point(buttonPurchaseNoAd->getPositionX(), -200))); }); _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); listener = EventListenerCustom::create(EVENT_PURCHASED + "com.reallycsc.endlesslove.adremove", [=](EventCustom* event) { m_pGameMediator->setIsAd(false); m_pGameMediator->setIsGuidelineForever(true); buttonPurchaseNoAd->runAction(MoveTo::create(0.5f, Point(buttonPurchaseNoAd->getPositionX(), -200))); CSCClass::CSC_IOSHelper::GameCenter_checkAndUnlockAchievement("com.reallycsc.endlesslove.adremove"); }); _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); } // set all text auto mapGameText = m_pGameMediator->getGameText(); textGameTitle->setString(mapGameText->at("ID_COMMON_GAMETITLE")); textPlay->setString(mapGameText->at("ID_MAINMENU_PLAY")); textGoldNumber->setString(StringUtils::format("%lld", m_pPlayerData->getGoldNumberAll())); textHighscore->setString(StringUtils::format("%s%lld", mapGameText->at("ID_COMMON_HIGHSCORE").c_str(), m_pPlayerData->getHighscore())); // add event listener auto listener = EventListenerCustom::create(EVENT_PLARERDATA_SCOREUPDATED+"Highscore", [=](EventCustom* event){ textHighscore->setString(StringUtils::format("%s%lld", m_pGameMediator->getGameText()->at("ID_COMMON_HIGHSCORE").c_str(), m_pPlayerData->getHighscore())); }); _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); listener = EventListenerCustom::create(EVENT_PLARERDATA_SCOREUPDATED+"GoldNumber", [=](EventCustom* event){ textGoldNumber->setString(StringUtils::format("%lld", m_pPlayerData->getGoldNumberAll())); }); _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); // Play animation & bind frame event m_pAnimate->play("Cardiogram_Play", true); // random blink this->runAction(Sequence::createWithTwoActions( DelayTime::create(random(1.0f, 5.0f)), CallFunc::create(CC_CALLBACK_0(MainMenuLayer::playerBlink, this)) )); // Play music CocosDenshion::SimpleAudioEngine::getInstance()->setBackgroundMusicVolume(1.0); CocosDenshion::SimpleAudioEngine::getInstance()->playBackgroundMusic(BACKGROUND_MUSIC_FILE.c_str(), true); return true; }
bool AttackLayer::init(){ if (!Layer::init()) { return false; } bgX = Director::getInstance()->getVisibleSize().width; bgY = Director::getInstance()->getVisibleSize().height; //´´½¨±³¾° bg = Sprite::create(choseInformation::getInstence()->getImageName()); bg->setPosition(Vec2(bgX / 2, bgY / 2)); bg->setScale(1.109, 1.04); addChild(bg); //´´½¨Ó¢ÐÛ°´Å¥µÄ±³¾° herowindow = Sprite::create("Attack_Hero_Window.png"); herowindow->setPosition(bgX / 2, herowindow->getContentSize().height / 2); addChild(herowindow); //µ¼ÈëÓ¢ÐÛ addHeroWindow(); //ÕÚÕÖ²ã shield = Sprite::create("Attack_Hero_Window.png"); shield->setScale(1.37, 4.15); shield->setPosition(bgX / 2, bgY / 2); shield->setVisible(false); this->addChild(shield); //ÔÝÍ£°´Å¥ auto stopItem = MenuItemImage::create("pausebt.png", "pausebtn-disable.png", CC_CALLBACK_1(AttackLayer::stopLayer, this)); auto stopMenu = Menu::create(stopItem, NULL); stopMenu->setName("stop"); stopItem->setName("name"); float smX = stopItem->getContentSize().width; float smY = bgY - stopItem->getContentSize().height / 2; stopMenu->setPosition(Vec2(smX, smY)); addChild(stopMenu); //ͨÍùÏÂÒ»²ãµÄ°´Å¥ nextitem = MenuItemImage::create("NextMapMenuItem.png", "NextMapMenuItem.png", CC_CALLBACK_1(AttackLayer::nextMap, this)); nextitem->setVisible(false); auto nextMenu = Menu::create(nextitem, NULL); float nmX = bgX - nextitem->getContentSize().width; float nmY = bgY / 2; nextMenu->setPosition(Vec2(nmX, nmY)); addChild(nextMenu); auto move_a = MoveBy::create(0.5, Vec2(40, 0)); auto move_b = MoveTo::create(0.5, nextMenu->getPosition()); auto seq = Sequence::create(move_a, move_b, NULL); nextMenu->runAction(RepeatForever::create(seq)); //×Ô¶¯Õ½¶·°´Å¥ auto automaticItem = MenuItemImage::create("Automatic_a.png", "Automatic_b.png",CC_CALLBACK_1(AttackLayer::automaticAttack,this)); float amX = herowindow->getPosition().x + herowindow->getContentSize().width / 2 + automaticItem->getContentSize().width / 2; float amY = herowindow->getPosition().y; automaticItem->setPosition(Vec2(amX, amY)); auto menuMaticItem = Menu::create(automaticItem,nullptr); menuMaticItem->setPosition(0,0); automaticItem->setName("automatic"); menuMaticItem->setName("menuMaticItem"); this->addChild(menuMaticItem); 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(); ///////////////////////////// // 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(Vec2(origin.x + visibleSize.width - closeItem->getContentSize().width/2 , origin.y + closeItem->getContentSize().height/2)); // create menu, it's an autorelease object auto menu = Menu::create(closeItem, NULL); menu->setPosition(Vec2::ZERO); this->addChild(menu, 1); ///////////////////////////// // 3. add your codes below... // add a label shows "Hello World" // create and initialize a label auto label = Label::createWithTTF("Hello World", "fonts/Marker Felt.ttf", 24); // position the label on the center of the screen label->setPosition(Vec2(origin.x + visibleSize.width/2, origin.y + visibleSize.height - label->getContentSize().height)); // add the label as a child to this layer this->addChild(label, 1); // add "HelloWorld" splash screen" auto sprite = Sprite::create("HelloWorld.png"); // position the sprite on the center of the screen sprite->setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y)); // add the sprite as a child to this layer this->addChild(sprite, 0); // Between this->runAction(Sequence::create(Between::to(sprite, "x:240, y:120, rot:30", 3.0f, Easing::QuadOut), Between::to(sprite, "scale:1.2, rot:180", 3.0f, Easing::BackIn), Between::tween(sprite, "scale:0.1, x:200, y:200","scale:1.2, x:400", 3.0f, Easing::ExpoInOut), nullptr)); return true; }
bool TextureAtlas::initWithTexture(Texture2D *texture, ssize_t capacity) { CCASSERT(capacity>=0, "Capacity must be >= 0"); // CCASSERT(texture != nullptr, "texture should not be null"); _capacity = capacity; _totalQuads = 0; // retained in property this->_texture = texture; CC_SAFE_RETAIN(_texture); // Re-initialization is not allowed CCASSERT(_quads == nullptr && _indices == nullptr, ""); _quads = (V3F_C4B_T2F_Quad*)malloc( _capacity * sizeof(V3F_C4B_T2F_Quad) ); _indices = (GLushort *)malloc( _capacity * 6 * sizeof(GLushort) ); if( ! ( _quads && _indices) && _capacity > 0) { //CCLOG("cocos2d: TextureAtlas: not enough memory"); CC_SAFE_FREE(_quads); CC_SAFE_FREE(_indices); // release texture, should set it to null, because the destruction will // release it too. see cocos2d-x issue #484 CC_SAFE_RELEASE_NULL(_texture); return false; } memset( _quads, 0, _capacity * sizeof(V3F_C4B_T2F_Quad) ); memset( _indices, 0, _capacity * 6 * sizeof(GLushort) ); #if CC_ENABLE_CACHE_TEXTURE_DATA // listen the event when app go to background _backToForegroundlistener = EventListenerCustom::create(EVENT_COME_TO_FOREGROUND, CC_CALLBACK_1(TextureAtlas::listenBackToForeground, this)); Director::getInstance()->getEventDispatcher()->addEventListenerWithFixedPriority(_backToForegroundlistener, -1); #endif this->setupIndices(); if (Configuration::getInstance()->supportsShareableVAO()) { setupVBOandVAO(); } else { setupVBO(); } _dirty = true; 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(); /* REGISTERING TOUCH EVENTS ===================================================== */ auto controls = EventListenerTouchAllAtOnce::create(); controls->onTouchesBegan = CC_CALLBACK_2(HelloWorld::onTouchesBegan, this); _eventDispatcher->addEventListenerWithSceneGraphPriority(controls, this); /* NOTE: don't get in the habit of using auto everywhere An iron price to be paid (extra time == life) masquerading as convenience No reference can be made with auto and makes code unreadable Justified here since controls is a one-off and will not be referenced anywhere else but in this temporal block ALSO: This is what is called a observer pattern in the industry controls would be an "interface" of known `subscribers` to the _eventDispatcher `publisher` and events are "published" to the subscribers as they happen. Interface just means a contractual agreement between different parts of code to follow a uniform language */ /* CREATE A TMXTILEDMAP AND EXTRACT LAYER FOR DISPLAY ===================================================== */ _tileMap = TMXTiledMap::create("TileMap.tmx"); // DEPRECATED: _tileMap = new CCTMXTiledMap(); // _tileMap->initWithTMXFile("TileMap.tmx"); _background = _tileMap->getLayer("Background"); // DEPRECATED: _tileMap->layerNamed("Background"); _meta = _tileMap->layerNamed("Meta"); _meta->setVisible(false); this->addChild(_tileMap); TMXObjectGroup *objectGroup = _tileMap->objectGroupNamed("Objects"); // DEPRECATED: CCTMXObjectGroup *objectGroup = _tileMap->objectGroupNamed("Objects"); if(objectGroup == NULL) { CCLOG("tile map has no Objects object layer"); // DEPRECATED: CCLog("tile map has no objects object layer"); return false; } ValueMap spawnPoint = objectGroup->objectNamed("SpawnPoint"); // DEPRECATED: CCDictionary *spawnPoint = objectGroup->objectNamed("SpawnPoint"); Vec2 spawnHere = Point(300, 300); if(spawnPoint.size() != 0) { CCLOG("LOGCAT!!! There is a spawn point"); } else { CCLOG("LOGCAT!!! There isn't a spawn point. Using default 300 x 300."); } _player = Sprite::create("Player.png"); _player->setPosition(spawnHere); this->addChild(_player); this->setViewPointCenter(_player->getPosition()); this->setTouchEnabled(true); ///////////////////////////// // 2. add a menu item with "X" image, which is clicked to quit the program // you may modify it. // create menu, it's an autorelease object // 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(Vec2(origin.x + visibleSize.width - closeItem->getContentSize().width/2 , origin.y + closeItem->getContentSize().height/2)); auto menu = Menu::create(closeItem, NULL); menu->setPosition(Vec2::ZERO); this->addChild(menu, 1); return true; }
void LoadingScene::loadRes() { LoaderManager::getInstance()->LoadRes("config/file.xml", CC_CALLBACK_1(LoadingScene::loadResCallback, this)); }
// on "init" you need to initialize your instance bool HelloWorld::init() { ////////////////////////////// // 1. super init first if ( !Layer::init() ) { return false; } auto visibleSize = Director::getInstance()->getVisibleSize(); 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( "CloseNormal.png", "CloseSelected.png", CC_CALLBACK_1(HelloWorld::menuCloseCallback, this)); closeItem->setPosition(Vec2(origin.x + visibleSize.width - closeItem->getContentSize().width/2 , origin.y + closeItem->getContentSize().height/2)); // create menu, it's an autorelease object auto menu = Menu::create(closeItem, NULL); menu->setPosition(Vec2::ZERO); this->addChild(menu, 1); ///////////////////////////// // 3. add your codes below... // add a label shows "Hello World" // create and initialize a label auto label = Label::createWithTTF(tapjoy::Tapjoy::getVersion(), "fonts/Marker Felt.ttf", 24); // position the label on the center of the screen label->setPosition(Vec2(origin.x + visibleSize.width/2, origin.y + visibleSize.height - label->getContentSize().height)); // add the label as a child to this layer this->addChild(label, 1); // add "HelloWorld" splash screen" auto sprite = Sprite::create("HelloWorld.png"); // position the sprite on the center of the screen sprite->setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y)); // add the sprite as a child to this layer this->addChild(sprite, 0); //////// // TextField auto textField = ui::TextField::create("TextField", "fonts/Marker Felt.ttf", 24); textField->ignoreContentAdaptWithSize(false); textField->setContentSize(Size(320, 100)); textField->setPosition(Vec2(10, 100)); this->addChild(textField, 2); return true; }
void Game1Layer::menuStartCallback(Ref* pSender){ ((MenuItemImage*)pSender)->runAction(FadeOut::create(0.5f)); guideBox->runAction(Sequence::create(FadeOut::create(0.5f), DelayTime::create(0.5f), CallFuncN::create(CC_CALLBACK_1(Game1Layer::questionUI,this)),NULL )); }
bool TestPushNotificationService::init() { ////////////////////////////// // 1. super init first if ( !Layer::init() ) { return false; } channelName = "App42TestPushChannelReturnss"; description = "Testing channel"; userName = "******"; deviceToken = "b1d6b70a7fe5a29be43b823f7bd3aa072f60d849c931b3465915773b835f00f3"; message = "Hello from cocos2d-X!"; Size visibleSize = Director::getInstance()->getVisibleSize(); Point origin = Director::getInstance()->getVisibleOrigin(); float button_y_Offset =30; float y_pos = visibleSize.height-button_y_Offset; float x_pos = origin.x + visibleSize.width/2; /** * Back Button */ auto backButtonItem = MenuItemImage::create( "BackButton.png", "BackButton.png", CC_CALLBACK_1(TestPushNotificationService::menuCloseCallback, this)); backButtonItem->setPosition(Point(x_pos ,origin.y + backButtonItem->getContentSize().height/2)); backButtonItem->setTag(GO_HOME); /** * Register Device Token */ auto registerDeviceTokenLabel = LabelTTF::create("RegisterDevice", "Marker Felt", 24); registerDeviceTokenLabel->setColor(Color3B::WHITE); auto registerDeviceTokenItem = MenuItemLabel::create(registerDeviceTokenLabel, CC_CALLBACK_1(TestPushNotificationService::registerDeviceToken, this)); //y_pos -= button_y_Offset; registerDeviceTokenItem->setPosition(Point(x_pos,y_pos)); /** * Create Channel */ auto createChannelLabel = LabelTTF::create("CreateChannel", "Marker Felt", 24); createChannelLabel->setColor(Color3B::WHITE); auto createChannelItem = MenuItemLabel::create(createChannelLabel, CC_CALLBACK_1(TestPushNotificationService::createChannel, this)); y_pos -= button_y_Offset; createChannelItem->setPosition(Point(x_pos,y_pos)); /** * Subscribe To Channel */ auto subscribeToChannelLabel = LabelTTF::create("SubscribeToChannel", "Marker Felt", 24); subscribeToChannelLabel->setColor(Color3B::WHITE); auto subscribeToChannelItem = MenuItemLabel::create(subscribeToChannelLabel, CC_CALLBACK_1(TestPushNotificationService::subscribeToChannel, this)); y_pos -= button_y_Offset; subscribeToChannelItem->setPosition(Point(x_pos,y_pos)); /** * Subscribe Device To Channel */ auto subscribeDeviceToChannelLabel = LabelTTF::create("SubscribeDeviceToChannel", "Marker Felt", 24); subscribeDeviceToChannelLabel->setColor(Color3B::WHITE); auto subscribeDeviceToChannelItem = MenuItemLabel::create(subscribeDeviceToChannelLabel, CC_CALLBACK_1(TestPushNotificationService::subscribeDeviceToChannel, this)); y_pos -= button_y_Offset; subscribeDeviceToChannelItem->setPosition(Point(x_pos,y_pos)); /** * Unsubscribe To Channel */ auto unsubscribeToChannelLabel = LabelTTF::create("UnsubscribeToChannel", "Marker Felt", 24); unsubscribeToChannelLabel->setColor(Color3B::WHITE); auto unsubscribeToChannelItem = MenuItemLabel::create(unsubscribeToChannelLabel, CC_CALLBACK_1(TestPushNotificationService::unsubscribeToChannel, this)); y_pos -= button_y_Offset; unsubscribeToChannelItem->setPosition(Point(x_pos,y_pos)); /** * Unsubscribe Device To Channel */ auto unsubscribeDeviceToChannelLabel = LabelTTF::create("UnsubscribeDeviceToChannel", "Marker Felt", 24); unsubscribeDeviceToChannelLabel->setColor(Color3B::WHITE); auto unsubscribeDeviceToChannelItem = MenuItemLabel::create(unsubscribeDeviceToChannelLabel, CC_CALLBACK_1(TestPushNotificationService::unsubscribeDeviceToChannel, this)); y_pos -= button_y_Offset; unsubscribeDeviceToChannelItem->setPosition(Point(x_pos,y_pos)); /** * Delete DeviceToken for user */ auto deleteDeviceTokenLabel = LabelTTF::create("DeleteDeviceToken", "Marker Felt", 24); deleteDeviceTokenLabel->setColor(Color3B::WHITE); auto deleteDeviceTokenItem = MenuItemLabel::create(deleteDeviceTokenLabel, CC_CALLBACK_1(TestPushNotificationService::deleteDevice, this)); y_pos -= button_y_Offset; deleteDeviceTokenItem->setPosition(Point(x_pos,y_pos)); /** * Delete All Devices for user */ auto deleteAllDevicesLabel = LabelTTF::create("DeleteAllDevices", "Marker Felt", 24); deleteAllDevicesLabel->setColor(Color3B::WHITE); auto deleteAllDevicesItem = MenuItemLabel::create(deleteAllDevicesLabel, CC_CALLBACK_1(TestPushNotificationService::deleteAllDevices, this)); y_pos -= button_y_Offset; deleteAllDevicesItem->setPosition(Point(x_pos,y_pos)); /** * Unsubscribe device */ auto unsubscribeDeviceLabel = LabelTTF::create("UnsubscribeDevice", "Marker Felt", 24); unsubscribeDeviceLabel->setColor(Color3B::WHITE); auto unsubscribeDeviceItem = MenuItemLabel::create(unsubscribeDeviceLabel, CC_CALLBACK_1(TestPushNotificationService::unsubscribrDevice, this)); y_pos -= button_y_Offset; unsubscribeDeviceItem->setPosition(Point(x_pos,y_pos)); /** * Resubscribe device */ auto resubscribeDeviceLabel = LabelTTF::create("ResubscribeDevice", "Marker Felt", 24); resubscribeDeviceLabel->setColor(Color3B::WHITE); auto resubscribeDeviceItem = MenuItemLabel::create(resubscribeDeviceLabel, CC_CALLBACK_1(TestPushNotificationService::resubscribeDevice, this)); y_pos -= button_y_Offset; resubscribeDeviceItem->setPosition(Point(x_pos,y_pos)); /** * SendPushMessageToUser */ auto sendPushToUserLabel = LabelTTF::create("SendPushMessageToUser", "Marker Felt", 24); sendPushToUserLabel->setColor(Color3B::WHITE); auto sendPushToUserItem = MenuItemLabel::create(sendPushToUserLabel, CC_CALLBACK_1(TestPushNotificationService::sendPushMessageToUser, this)); y_pos -= button_y_Offset; sendPushToUserItem->setPosition(Point(x_pos,y_pos)); /** * SendPushJsonToUser */ auto sendPushJsonToUserLabel = LabelTTF::create("SendPushJsonToUser", "Marker Felt", 24); sendPushJsonToUserLabel->setColor(Color3B::WHITE); auto sendPushJsonToUserItem = MenuItemLabel::create(sendPushJsonToUserLabel, CC_CALLBACK_1(TestPushNotificationService::sendPushJsonToUser, this)); y_pos -= button_y_Offset; sendPushJsonToUserItem->setPosition(Point(x_pos,y_pos)); /** * SendPushToAll */ auto sendPushToAllLabel = LabelTTF::create("SendPushToAll", "Marker Felt", 24); sendPushToAllLabel->setColor(Color3B::WHITE); auto sendPushToAllItem = MenuItemLabel::create(sendPushToAllLabel, CC_CALLBACK_1(TestPushNotificationService::sendPushMessageToAll, this)); y_pos -= button_y_Offset; sendPushToAllItem->setPosition(Point(x_pos,y_pos)); /** * SendPushToAllByType */ auto sendPushToAllByTypeLabel = LabelTTF::create("SendPushToAllByType", "Marker Felt", 24); sendPushToAllByTypeLabel->setColor(Color3B::WHITE); auto sendPushToAllByTypeItem = MenuItemLabel::create(sendPushToAllByTypeLabel, CC_CALLBACK_1(TestPushNotificationService::sendPushMessageToAllByType, this)); y_pos -= button_y_Offset; sendPushToAllByTypeItem->setPosition(Point(x_pos,y_pos)); /** * Create menu, it's an autorelease object */ auto menu = Menu::create(backButtonItem, registerDeviceTokenItem, createChannelItem, subscribeToChannelItem, subscribeDeviceToChannelItem, unsubscribeToChannelItem, unsubscribeDeviceToChannelItem, deleteDeviceTokenItem, deleteAllDevicesItem, unsubscribeDeviceItem, resubscribeDeviceItem, sendPushToUserItem, sendPushJsonToUserItem, sendPushToAllItem, sendPushToAllByTypeItem, NULL); menu->setPosition(Point::ZERO); this->addChild(menu, 1); return true; }
void Game1Layer::questionUI(Node* node){ //arrangement loadImageAnswer(); Size visibleSize = Director::getInstance()->getVisibleSize(); Point origin = Director::getInstance()->getVisibleOrigin(); cluePoint = Point(visibleSize.width*3/10,visibleSize.height*2/3.3); answerPoint = Point(visibleSize.width * 3 / 10, visibleSize.height * 2 / 10); submitPoint = Point(visibleSize.width * 7.7f / 10, visibleSize.height * 2 / 10); nextPoint = Point(visibleSize.width * 7.7f / 10, visibleSize.height * 4 / 10); resultPoint = Point(visibleSize.width * 7.7f / 10, visibleSize.height * 2 / 10); guidePoint = Point(visibleSize.width * 7.7f / 10, visibleSize.height * 7.5f / 10); //submit and next button auto submitItem = MenuItemImage::create( "stage1/submit1.png", "stage1/submit1.png", CC_CALLBACK_1(Game1Layer::menuSubmitCallback, this)); submitItem->setPosition(submitPoint); submitItem->setScale(visibleSize.width / submitItem->getContentSize().width / 3, visibleSize.height / submitItem->getContentSize().height/ 6); auto nextItem = MenuItemImage::create( "stage1/nextclue.png", "stage1/nextclue.png", CC_CALLBACK_1(Game1Layer::menuNextCallback, this)); nextItem->setPosition(nextPoint); nextItem->setScale(visibleSize.width / nextItem->getContentSize().width / 3, visibleSize.height / nextItem->getContentSize().height / 6); CCLOG("tienhoangna"); menu = Menu::create(submitItem,nextItem, NULL); menu->setPosition(Point::ZERO); this->addChild(menu, 2); // //Add Successful Box and Guide Box ingameGuide = CCLabelTTF::create(GAMEGUIDE, "Arial",20, Size(visibleSize.width *2/5, visibleSize.height / 5*2)); ingameGuide->setPosition(guidePoint); this->addChild(ingameGuide); ingameGuide->setColor(Color3B::BLUE); ingameGuide->setHorizontalAlignment(TextHAlignment::LEFT); inform = CCLabelTTF::create("", "Arial", 25, Size(visibleSize.width / 5 * 2, visibleSize.height / 5 * 2)); inform->setPosition(guidePoint); this->addChild(inform,5); inform->setOpacity(0); inform->setColor(Color3B::BLUE); inform->setHorizontalAlignment(TextHAlignment::LEFT); // //Add answer box to game auto answerBoxSize = Size(visibleSize.width *2/5 , visibleSize.height / 12); answerBox = EditBox::create(answerBoxSize, Scale9Sprite::create("stage1/tb.png")); answerBox->setPosition(answerPoint); answerBox->setPlaceHolder("Please enter the answer"); answerBox->setFont("Arial", 37); answerBox->setText("answer here!"); answerBox->setFontColor(cocos2d::Color3B::MAGENTA); //answerBox->setDelegate(this); this->addChild(answerBox,2); // openQuestion(); }
void GameInfoScene::createGamePanel() { Size visibleSize = Director::getInstance()->getVisibleSize(); auto bgcolor = LayerColor::create(GameInfos[game].color, visibleSize.width, visibleSize.height); bgcolor->setPosition(Point::ZERO); addChild(bgcolor); addChild(BackgroundWidget::createWithoutBackground()); auto hooker = TopAnchor::create(); addChild(hooker, 1); addChild(Vignette::create()); auto gamelogo = MAKESPRITE(GameInfos[game].logo); hooker->addChild(gamelogo); gamelogo->setPosition(VCP(0.5f, 0.70f)); gamelogo->runAction(RepeatForever::create(Sequence::createWithTwoActions( ScaleTo::create(3.0f, 1.05f), ScaleTo::create(3.0f, 1.0f) ))); auto hookerMenu = Menu::create(); hookerMenu->setPosition(Point::ZERO); hooker->addChild(hookerMenu); #if (CC_TARGET_PLATFORM != CC_PLATFORM_ANDROID) auto btnMenu = MAKEBUTTON("btnBackUp", "btnBackDn", GameInfoScene::menuCloseCallback); btnMenu->setPosition(VCP(0.03f, 0.95f)); btnMenu->setAnchorPoint(Point(0, 1.0f)); btnMenu->setScale(1.3f); hookerMenu->addChild(btnMenu); auto gems = GemsLayer::create(); gems->setAnchorPoint(Point(1, 1)); gems->setPosition(VCP(0.97f, 0.95f)); hooker->addChild(gems); #endif auto pMenu = Menu::create(); pMenu->setPosition(Point::ZERO); addChild(pMenu, 1); auto episodetitle = Label::createWithTTF(LS(GameInfos[game].title), NORMAL_TTF, 60.0f); episodetitle->setHorizontalAlignment(TextHAlignment::CENTER); episodetitle->setPosition(CP(0.5f, 0.45f)); addChild(episodetitle); auto unlocktext = Label::createWithTTF(LS(GameInfos[game].description), NORMAL_TTF, 38.0f); unlocktext->setHorizontalAlignment(TextHAlignment::CENTER); unlocktext->setPosition(CP(0.5f, 0.30f)); addChild(unlocktext); #if (CC_TARGET_PLATFORM != CC_PLATFORM_ANDROID) if (GameSettings::Gems >= 1) { //show buy button auto btnBuy = MakeButton("btnGreenUp", "btnGreenDn", LS("PlayFor1Gem"), 42.0f, CC_CALLBACK_1(GameInfoScene::btnBuyPressed, this)); btnBuy->setPosition(CP(0.5f, 0.05f)); btnBuy->setAnchorPoint(Point(0.5f, 0)); pMenu->addChild(btnBuy); } else { auto errortext = Label::createWithTTF(LS("NotEnoughGems"), FANCY_TTF, 42.0f); errortext->setColor(Color3B::RED); errortext->enableShadow(); errortext->setPosition(CP(0.5f, 0.05f)); addChild(errortext); } #else auto btnBuy = MakeButton("btnGreenUp", "btnGreenDn", LS("Play"), 42.0f, CC_CALLBACK_1(GameInfoScene::btnBuyPressed, this)); btnBuy->setPosition(CP(0.5f, 0.05f)); btnBuy->setAnchorPoint(Point(0.5f, 0)); pMenu->addChild(btnBuy); #endif }
bool GameOverLayer::init() { if ( !Layer::init() ) { return false; } cocos2d::Size winSize = Director::getInstance()->getWinSize(); #if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS) sdkbox::PluginVungle::init(); sdkbox::PluginVungle::setListener(this); #endif // load csb auto rootNode = CSLoader::createNode("GameOverLayer.csb"); m_pAnimate = CSLoader::createTimeline("GameOverLayer.csb"); rootNode->runAction(m_pAnimate); this->addChild(rootNode); m_pLayout = dynamic_cast<Layout*>(rootNode->getChildByName("Panel_GameOver")); // get botton m_pButtonRetry = dynamic_cast<Button*>(m_pLayout->getChildByName("Button_Retry")); m_pButtonRetry->addClickEventListener(CC_CALLBACK_1(GameOverLayer::menuCallback_Retry, this)); m_pButtonMainMenu = dynamic_cast<Button*>(m_pLayout->getChildByName("Button_MainMenu")); m_pButtonMainMenu->addClickEventListener(CC_CALLBACK_1(GameOverLayer::menuCallback_MainMenu, this)); m_pButtonRevive = dynamic_cast<Button*>(m_pLayout->getChildByName("Button_Revive")); m_pSpriteRevivePlay = dynamic_cast<Sprite*>(m_pButtonRevive->getChildByName("Sprite_playAd")); m_pButtonRevive->addClickEventListener(CC_CALLBACK_1(GameOverLayer::menuCallback_Revive, this)); m_pButtonDoubleCoin = dynamic_cast<Button*>(m_pLayout->getChildByName("Button_DoubleCoin")); m_pSpriteDoublePlay = dynamic_cast<Sprite*>(m_pButtonDoubleCoin->getChildByName("Sprite_playAd")); m_pButtonDoubleCoin->addClickEventListener(CC_CALLBACK_1(GameOverLayer::menuCallback_DoubleGold, this)); // if revive number get to max, disable the revive button if (m_pGameMediator->getReviveNumber() > 0) { m_pButtonRevive->setVisible(false); m_pButtonDoubleCoin->setPositionX(m_pLayout->getContentSize().width / 2); } // if gold == 0, disable the double button if (m_pPlayerData->getGoldNumber() == 0) { m_pButtonDoubleCoin->setVisible(false); m_pButtonRevive->setPositionX(m_pLayout->getContentSize().width / 2); } // if purchased noAd, noAd icon if(!m_pGameMediator->getIsAd()) { m_pSpriteRevivePlay->setVisible(false); m_pSpriteDoublePlay->setVisible(false); } else { #if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS) if (!sdkbox::PluginVungle::isCacheAvailable()) { // if vungle not ready m_pSpriteRevivePlay->setColor(Color3B(77, 77, 77)); m_pSpriteDoublePlay->setColor(Color3B(77, 77, 77)); } #endif } // get score text m_pTextHighscore = dynamic_cast<Text*>(m_pLayout->getChildByName("Node_EnlargeAnimation")->getChildByName("Text_Highscore")); m_pTextGoldNumber = dynamic_cast<Text*>(m_pLayout->getChildByName("Node_EnlargeAnimation")->getChildByName("Node_GoldNumber")->getChildByName("Text_GoldNumber")); // set all text dynamic_cast<Text*>(m_pLayout->getChildByName("Text_GameOver"))->setString(m_pMapGameText->at("ID_GAMEOVER_TITLE")); m_pButtonRetry->setTitleText(m_pMapGameText->at("ID_GAME_RETRY")); m_pButtonMainMenu->setTitleText(m_pMapGameText->at("ID_GAME_MAINMENU")); m_pButtonRevive->setTitleText(m_pMapGameText->at("ID_GAMEOVER_REVIVE")); // run animation m_pLayout->setPosition(cocos2d::Point(winSize.width / 2, winSize.height + m_pLayout->getContentSize().height)); m_pLayout->runAction(MoveTo::create(0.2f, cocos2d::Point(winSize.width / 2, winSize.height / 2))); this->showScore(); 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(); ///////////////////////////// // 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(Vec2(origin.x + visibleSize.width - closeItem->getContentSize().width/2 , origin.y + closeItem->getContentSize().height/2)); // create menu, it's an autorelease object auto menu = Menu::create(closeItem, NULL); menu->setPosition(Vec2::ZERO); this->addChild(menu, 1); ///////////////////////////// // 3. add your codes below... // add a label shows "Hello World" // create and initialize a label auto labelStart = LabelTTF::create("开始游戏","Arial",48); auto labelHelp = LabelTTF::create("游戏帮助","Arial",48); auto labelAbout = LabelTTF::create("退出游戏","Arial",48); auto startItem = MenuItemLabel::create(labelStart,CC_CALLBACK_1(HelloWorld::menuCallback, this)); startItem->setTag(START); startItem->setPosition(Vec2(visibleSize.width*0.5,visibleSize.height*0.5+50)); auto helpItem = MenuItemLabel::create(labelHelp,CC_CALLBACK_1(HelloWorld::menuCallback,this)); helpItem->setTag(HELP); helpItem->setPosition(Vec2(visibleSize.width*0.5,visibleSize.height*0.5-50)); auto aboutItem = MenuItemLabel::create(labelAbout,CC_CALLBACK_1(HelloWorld::menuCloseCallback,this)); aboutItem->setTag(ABOUT); aboutItem->setPosition(Vec2(visibleSize.width*0.5,visibleSize.height*0.5-150)); auto mainMenu = Menu::create(startItem, helpItem, aboutItem, NULL); mainMenu->setPosition(origin); this->addChild(mainMenu,1); // Sprite *background=Sprite::create("background2.png"); // background->setPosition(Vec2(visibleSize.width*0.5,visibleSize.height*0.5)); // background->setScale(visibleSize.height/960); // addChild(background,0); Sprite *Hbackground = Sprite::create("Hbackground.png"); Hbackground->setPosition(320,568); addChild(Hbackground); // auto *title=LabelTTF::create("蛋蛋快跑","Arial",60); // title->setPosition(Vec2(visibleSize.width*0.5,visibleSize.height-title->getContentSize().height/2-180)); // addChild(title,1); Sprite *title=Sprite::create("title.png"); title->setPosition(Vec2(visibleSize.width*0.5,visibleSize.height-title->getContentSize().height/2-140)); addChild(title); return true; }
bool MainMenuLayer::init() { if (!Layer::init()) { return false; } Size visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); CC_SAFE_RELEASE_NULL(_pPauseAndGold); CC_SAFE_RELEASE_NULL(_pRestartButton); CC_SAFE_RELEASE_NULL(_pGoldText); CC_SAFE_RELEASE_NULL(_pGoldImage); CC_SAFE_RELEASE_NULL(_pPauseButton); _pPauseAndGold = cocostudio::GUIReader::getInstance()->widgetFromJsonFile("HUD/HUD.json"); this->addChild(_pPauseAndGold, 100); CC_SAFE_RETAIN(_pPauseAndGold); _pGoldText = dynamic_cast<ui::TextAtlas *>(_pPauseAndGold->getChildByName("gold")); CC_SAFE_RETAIN(_pGoldText); _pGoldText->setString("0"); _pGoldText->setPosition(Vec2(origin.x + visibleSize.width - _pGoldText->getContentSize().width, origin.y + visibleSize.height - _pGoldText->getContentSize().height)); _pGoldImage = dynamic_cast<ui::ImageView *>(_pPauseAndGold->getChildByName("Image_3")); _pGoldImage->setPosition(Vec2(_pGoldText->getPositionX() - _pGoldImage->getContentSize().width, _pGoldText->getPositionY())); CC_SAFE_RETAIN(_pGoldImage); _pPauseButton = dynamic_cast<cocos2d::ui::Button *>(_pPauseAndGold->getChildByName("Button_1")); CC_SAFE_RETAIN(_pPauseButton); _pPauseButton->addTouchEventListener( [&](Ref * sender,cocos2d::ui::Widget::TouchEventType type) { static bool bIsPaused = false; if (type == cocos2d::ui::Widget::TouchEventType::ENDED) { if (bIsPaused) { bIsPaused = false; Director::getInstance()->resume(); } else { Director::getInstance()->pause(); bIsPaused = true; } }//if_type }//lambdy ); _pPauseButton->setPosition(Vec2(origin.x + _pPauseButton->getContentSize().width / 2, origin.y + visibleSize.height - _pPauseButton->getContentSize().height / 2)); _pPauseButton->setVisible(true); auto closeItem = MenuItemImage::create( "CloseNormal.png", "CloseSelected.png", CC_CALLBACK_1(MainMenuLayer::menuCloseCallback, this)); closeItem->setPosition(Vec2(origin.x + visibleSize.width - closeItem->getContentSize().width / 2, origin.y + closeItem->getContentSize().height / 2)); auto menu = Menu::create(closeItem, NULL); menu->setPosition(Vec2::ZERO); this->addChild(menu, 100); auto label = Label::createWithTTF("Game Parkour", "fonts/Marker Felt.ttf", 24); label->setPosition(Vec2(origin.x + visibleSize.width / 2, origin.y + visibleSize.height - label->getContentSize().height)); this->addChild(label,100); //this->scheduleUpdate(); _pGoldChanged = EventListenerCustom::create(RegitsteredEvents::GOLD_CHANGED, CC_CALLBACK_1(MainMenuLayer::ChangeGold, this)); Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(_pGoldChanged, this); CC_SAFE_RETAIN(_pGoldChanged); _pRestartButton = cocostudio::GUIReader::getInstance()->widgetFromJsonFile("Menu/Menu.json"); this->addChild(_pRestartButton, 10); auto restart_btn = dynamic_cast<cocos2d::ui::Button *>(_pRestartButton->getChildByName("restart")); restart_btn->addTouchEventListener([&](Ref* sender, cocos2d::ui::Widget::TouchEventType type) { if (type == cocos2d::ui::Widget::TouchEventType::ENDED) { Director::getInstance()->getEventDispatcher()->dispatchCustomEvent(RegitsteredEvents::GAME_RESTART); } }); _pRestartButton->setVisible(false); CC_SAFE_RETAIN(_pRestartButton); return true; }
bool GameLayer::init(){ if(Layer::init()) { //get the origin point of the X-Y axis, and the visiable size of the screen Size visiableSize = Director::getInstance()->getVisibleSize(); Point origin = Director::getInstance()->getVisibleOrigin(); this->gameStatus = GAME_STATUS_READY; this->score = 0; // Add the bird this->bird = BirdSprite::getInstance(); this->bird->createBird(); PhysicsBody *body = PhysicsBody::create(); body->addShape(PhysicsShapeCircle::create(BIRD_RADIUS)); body->setCategoryBitmask(ColliderTypeBird); body->setCollisionBitmask(ColliderTypeLand & ColliderTypePip | ColliderTypeBall); body->setContactTestBitmask(ColliderTypeLand | ColliderTypePip | ColliderTypeBall); body->setDynamic(true); body->setLinearDamping(0.0f); body->setGravityEnable(false); this->bird->setPhysicsBody(body); this->bird->setPosition(origin.x + visiableSize.width*1/3 - 5,origin.y + visiableSize.height/2 + 5); this->bird->idle(); this->addChild(this->bird); /* //初始化加速粒子 accelerateParticle = ParticleSystemQuad::create("particleImpact.plist"); accelerateParticle->setScale(0.5f); accelerateParticle->setPosition(0,0); addChild(accelerateParticle); */ accelerateParticle = NULL; pipSpeed = 2; /* //闪亮 Blink *blink = Blink::create(5.0f, 10); bird->runAction(blink); */ //Ball this->ball = Sprite::create("ball.png"); PhysicsBody *ballbody = PhysicsBody::create(); ballbody->addShape(PhysicsShapeCircle::create(BIRD_RADIUS+5)); ballbody->setCategoryBitmask(ColliderTypeBall); ballbody->setCollisionBitmask(ColliderTypePip | ColliderTypeLand); ballbody->setContactTestBitmask(ColliderTypePip | ColliderTypeLand); ballbody->setDynamic(true); ballbody->setLinearDamping(0.0f); ballbody->setGravityEnable(false); ball->setPhysicsBody(ballbody); // static Shaky3D* create(float duration, const Size& gridSize, int range, bool shakeZ); ball->setPosition(bird->getPositionX(),bird->getPositionY()+30); ball->setTag(100); // addChild(ball); BallisTouch = false; //BallName ballName = Sprite::create("BallWithHoney.png"); ballName->setPosition(ball->getPositionX(),ball->getPositionY()+40); //addChild(ballName); // Add the ground this->groundNode = Node::create(); float landHeight = BackgroundLayer::getLandHeight(); auto groundBody = PhysicsBody::create(); groundBody->addShape(PhysicsShapeBox::create(Size(288, landHeight))); groundBody->setDynamic(false); groundBody->setLinearDamping(0.0f); groundBody->setCategoryBitmask(ColliderTypeLand); groundBody->setCollisionBitmask(ColliderTypeBird | ColliderTypeBall); groundBody->setContactTestBitmask(ColliderTypeBird | ColliderTypeLand); this->groundNode->setPhysicsBody(groundBody); this->groundNode->setPosition(144, landHeight/2); this->addChild(this->groundNode); // init land this->landSpite1 = Sprite::createWithSpriteFrame(AtlasLoader::getInstance()->getSpriteFrameByName("land")); this->landSpite1->setAnchorPoint(Point::ZERO); this->landSpite1->setPosition(Point::ZERO); this->addChild(this->landSpite1, 30); this->landSpite2 = Sprite::createWithSpriteFrame(AtlasLoader::getInstance()->getSpriteFrameByName("land")); this->landSpite2->setAnchorPoint(Point::ZERO); this->landSpite2->setPosition(this->landSpite1->getContentSize().width-2.0f,0); this->addChild(this->landSpite2, 30); shiftLand = schedule_selector(GameLayer::scrollLand); this->schedule(shiftLand, 0.01f); this->scheduleUpdate(); auto contactListener = EventListenerPhysicsContact::create(); contactListener->onContactBegin = CC_CALLBACK_1(GameLayer::onContactBegin, this); this->getEventDispatcher()->addEventListenerWithSceneGraphPriority(contactListener, this); return true; }else { return false; } }
bool HelloWorld::init() { if (!Layer::init()) { return false; } Size visibleSize = Director::getInstance()->getVisibleSize(); Point origin = Director::getInstance()->getVisibleOrigin(); //在界面上添加菜单内容 //添加关闭程序按钮 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));//设定显示位置为屏幕宽度-控件自身宽高一半。也就是显示在右下角 //添加开始按钮 auto startMenu = MenuItemImage::create( "btn_start.png", "btn_start.png", CC_CALLBACK_1(HelloWorld::menuStartCallback, this)); startMenu->setPosition(Point(visibleSize.width / 2 + origin.x, visibleSize.height / 2 + origin.y + 50)); //添加帮助按钮 auto helpMenu = MenuItemImage::create( "btn_help.png", "btn_help.png", CC_CALLBACK_1(HelloWorld::menuHelpCallback, this)); helpMenu->setPosition(Point(visibleSize.width / 2 + origin.x, visibleSize.height / 2 + origin.y)); //添加退出按钮 auto exitMenu = MenuItemImage::create( "btn_exit.png", "btn_exit.png", CC_CALLBACK_1(HelloWorld::menuCloseCallback, this)); exitMenu->setPosition(Point(visibleSize.width / 2 + origin.x, visibleSize.height / 2 + origin.y - 50)); //创建菜单载体,将上面的菜单内容都添加到载体中 auto pMenu = Menu::create(startMenu, helpMenu, exitMenu, closeItem, NULL);//添加制定的菜单项 pMenu->setPosition(Point::ZERO);//设置显示位置 this->addChild(pMenu, 1);//添加到场景中 //制定游戏背景 auto sprite = Sprite::create("HelloWorld.png"); sprite->setPosition(Point(visibleSize.width / 2 + origin.x, visibleSize.height / 2 + origin.y)); this->addChild(sprite, 0); //------------------------ return true; }