bool GameOver::init() { if(!Layer::init()){ return false; } auto visibleSize = Director::getInstance()->getVisibleSize(); auto origin = Director::getInstance()->getVisibleOrigin(); LabelTTF* thanks = LabelTTF::create("Thanks for playing +Neuron", "Serif", 50); thanks->setPosition(Point(visibleSize.width/2, visibleSize.height - thanks->getContentSize().height*2)); this->addChild(thanks); auto _nickname_input = new TextFieldTTFDefault(); _nickname_input->autorelease(); _nickname_input->onEditingEnd = CC_CALLBACK_1(GameOver::getNickName, this); this->addChild(_nickname_input); /* *Todo accion por fuera de INIT genera un fallo de segmentacion *??como hacer para aparecer el boton despues de escribir el nombre? * -intente con updateGame, fallo de segmentacion * -intente desde getNickname, fallo de segmentacion */ /* auto endGameItem = MenuItemImage::create( "botones/salir.png", "botones/salir.png", CC_CALLBACK_0(GameOver::closeAndSave, this) ); endGameItem->setPosition(Point(visibleSize.width - endGameItem->getContentSize().width + origin.x, visibleSize.height/5 + origin.y)); endGameItem->runAction(Hide::create()); auto menu = Menu::create(endGameItem, NULL); menu->setPosition(Point::ZERO); _nickname_input->addChild(menu);*/ return true; }
void RichText::handleTextRenderer(const char *text, const char *fontName, float fontSize, const Color3B &color, GLubyte opacity) { LabelTTF* textRenderer = LabelTTF::create(text, fontName, fontSize); float textRendererWidth = textRenderer->getContentSize().width; _leftSpaceWidth -= textRendererWidth; if (_leftSpaceWidth < 0.0f) { float overstepPercent = (-_leftSpaceWidth) / textRendererWidth; std::string curText = text; int stringLength = curText.length(); int leftLength = stringLength * (1.0f - overstepPercent); std::string leftWords = curText.substr(0, leftLength); std::string cutWords = curText.substr(leftLength, curText.length()-1); if (leftLength > 0) { LabelTTF* leftRenderer = LabelTTF::create(leftWords.substr(0, leftLength).c_str(), fontName, fontSize); leftRenderer->setColor(color); leftRenderer->setOpacity(opacity); pushToContainer(leftRenderer); } addNewLine(); handleTextRenderer(cutWords.c_str(), fontName, fontSize, color, opacity); } else { textRenderer->setColor(color); textRenderer->setOpacity(opacity); pushToContainer(textRenderer); } }
// 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 MenuItemImage *pCloseItem = MenuItemImage::create( "CloseNormal.png", "CloseSelected.png", this, menu_selector(HelloWorld::menuCloseCallback)); pCloseItem->setPosition(ccp(origin.x + visibleSize.width - pCloseItem->getContentSize().width/2 , origin.y + pCloseItem->getContentSize().height/2)); // create menu, it's an autorelease object Menu* pMenu = Menu::create(pCloseItem, NULL); pMenu->setPosition(PointZero); this->addChild(pMenu, 1); ///////////////////////////// // 3. add your codes below... // add a label shows "Hello World" // create and initialize a label LabelTTF* pLabel = LabelTTF::create("Hello World", "Arial", 24); // position the label on the center of the screen pLabel->setPosition(ccp(origin.x + visibleSize.width/2, origin.y + visibleSize.height - pLabel->getContentSize().height)); // add the label as a child to this layer this->addChild(pLabel, 1); // add "HelloWorld" splash screen" Sprite* pSprite = Sprite::create("HelloWorld.png"); // position the sprite on the center of the screen pSprite->setPosition(ccp(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y)); // add the sprite as a child to this layer this->addChild(pSprite, 0); 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(); Point origin = Director::getInstance()->getVisibleOrigin(); LabelTTF* pLabel = LabelTTF::create("Hello Girl", FONT_NAME, TITLE_FONT_SIZE); // position the label on the center of the screen pLabel->setPosition(Point(origin.x + visibleSize.width / 2, origin.y + visibleSize.height - pLabel->getContentSize().height)); // add the label as a child to this layer this->addChild(pLabel, 1); return true; }
void GamePlay::gameOver(float dt) { // Director::getInstance()->pause(); gameState = End; //invisible frame ready if (frameReady != NULL) { for (int i = 0; i < SUM_NUM; i++) frameReady[i]->setVisible(false); } boardWin = Sprite::create("board.png"); boardWin->setPosition(Vec2(-visibleSize.width / 4, visibleSize.height / 2)); boardWin->setZOrder(30); this->addChild(boardWin); float haflHeight = boardWin->getContentSize().height / 2; float haflWidth = boardWin->getContentSize().width / 2; auto jumpto = JumpTo::create(0.5, Vec2(visibleSize.width / 2, visibleSize.height / 2 - 3 * PADDING), PADDING * 3, 4); boardWin->runAction(jumpto); updatehightestRecord(); if (onSound) CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect( "sound/music_win.ogg"); //congratulation Sprite* congratulation = Sprite::create("congratulation.png"); congratulation->setPosition( Vec2(haflWidth, haflHeight * 2 - 3 * PADDING - congratulation->getContentSize().height)); congratulation->setZOrder(40); boardWin->addChild(congratulation); //highscore Sprite* newhighscore = Sprite::create("newhighscore.png"); newhighscore->setPosition( Vec2(haflWidth, congratulation->getPositionY() - congratulation->getContentSize().height / 2 - newhighscore->getContentSize().height / 2 - 2 * PADDING)); newhighscore->setZOrder(40); boardWin->addChild(newhighscore); //TODO if (timeplay > 0) NativeUtils::submitScore( getLeaderBoard(GamePlay::instance()->getLevel()), timeplay * 1000); if (timeplay > highScore) { newhighscore->setVisible(false); } else { newhighscore->setVisible(true); } //gameover text Sprite* gameovertext = Sprite::create("gameovertext.png"); gameovertext->setPosition( Vec2(4 * PADDING + gameovertext->getContentSize().width / 2, newhighscore->getPositionY() - newhighscore->getContentSize().height / 2 - gameovertext->getContentSize().height / 2 - 2 * PADDING)); gameovertext->setZOrder(40); boardWin->addChild(gameovertext); float sizewidth = gameovertext->getContentSize().width; float sizeheight = gameovertext->getContentSize().height; //show score LabelTTF *currentscore = LabelTTF::create("00:00", "fonts/hlvgchac.ttf", 40); currentscore->setZOrder(50); currentscore->setColor(Color3B(Color3B::BLUE)); showTextTime(currentscore, timeplay); currentscore->setPositionX( sizewidth + PADDING + currentscore->getContentSize().width / 2); currentscore->setPositionY(sizeheight / 2); gameovertext->addChild(currentscore); LabelTTF *highscore = LabelTTF::create("00:00", "fonts/hlvgchac.ttf", 40); highscore->setZOrder(50); highscore->setColor(Color3B(Color3B::BLUE)); showTextTime(highscore, highScore); highscore->setPositionX( sizewidth + PADDING + currentscore->getContentSize().width / 2); highscore->setPositionY(highscore->getContentSize().height / 2); gameovertext->addChild(highscore); std::string miniModeSprite = getLevelString( GamePlay::instance()->getLevel()); Sprite* miniMode = Sprite::create("mini" + miniModeSprite + ".png"); miniMode->setPosition( Vec2( haflWidth * 2 - miniMode->getContentSize().width / 2 - 3 * PADDING, gameovertext->getPositionY() + miniMode->getContentSize().height / 2 + 2 * PADDING)); boardWin->addChild(miniMode); //button ok MenuItemImage* okBtn = MenuItemImage::create("okBtn.png", "okBtn.png", CC_CALLBACK_0(GamePlay::gameCloseWinBoard, this)); auto okMenu = Menu::create(okBtn, nullptr); okMenu->setZOrder(40); okMenu->setPosition( Vec2(haflWidth / 2 + PADDING, gameovertext->getPositionY() - gameovertext->getContentSize().height / 2 - okBtn->getContentSize().height / 2 - 2 * PADDING)); boardWin->addChild(okMenu); //button share MenuItemImage* shareBtn = MenuItemImage::create("shareBtn.png", "shareBtn.png", CC_CALLBACK_0(GamePlay::gameShareWin, this)); auto shareMenu = Menu::create(shareBtn, nullptr); shareMenu->setZOrder(40); shareMenu->setPosition( Vec2(haflWidth * 3 / 2 - PADDING, okMenu->getPositionY())); boardWin->addChild(shareMenu); }
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; }
FailScene::FailScene(void) { Vec2 points[] = { Vec2(0, 0), Vec2(0, 140), Vec2(400, 140), Vec2(400, 0) }; DrawNode* draw = DrawNode::create(); //±³¾° draw->drawPolygon(points, 4, ColorUtil::getColor4F(0x00 , 0xAD , 0xFF, 0xFF), 0, ColorUtil::getColor4F(0x00, 0xDA, 0xFF, 0xFF)); this->addChild(draw); draw->setAnchorPoint(Point(.5, .5)); draw->setPositionX(ScreenUtil::getCenter().x - 200); draw->setPositionY(ScreenUtil::getCenter().y - 140); Vec2 points2[] = { Vec2(0, 0), Vec2(0, 150), Vec2(230, 150), Vec2(230, 0) }; DrawNode* draw2 = DrawNode::create(); //±³¾° draw2->drawPolygon(points2, 4, ColorUtil::getColor4F(0x00 , 0xAD , 0xFF, 0xFF), 0, ColorUtil::getColor4F(0x00, 0xDA, 0xFF, 0xFF)); this->addChild(draw2); draw2->setAnchorPoint(Point(.5, .5)); draw2->setPositionX(ScreenUtil::getCenter().x - 115); draw2->setPositionY(ScreenUtil::getCenter().y + 40); LabelTTF* scoreTxt = LabelTTF::create("Score:", "Arial", 45); scoreTxt->setAnchorPoint(Point(0, .5)); scoreTxt->setPosition(Point(draw2->getPositionX() + 10, draw2->getPositionY() + 110)); this->addChild(scoreTxt); LabelTTF* bestScoreTxt = LabelTTF::create("Best:", "Arial", 45); bestScoreTxt->setAnchorPoint(Point(0, .5)); bestScoreTxt->setPosition(Point(scoreTxt->getPositionX(), draw2->getPositionY() + 50)); this->addChild(bestScoreTxt); LabelTTF* scoreValTxt = LabelTTF::create("0", "Arial", 45); scoreValTxt->setPositionX(scoreTxt->getPositionX() + scoreTxt->getContentSize().width + 25); scoreValTxt->setPositionY(scoreTxt->getPositionY()); scoreValTxt->setTag(scoreValTxtTag); this->addChild(scoreValTxt); LabelTTF* bestScoreValTxt = LabelTTF::create("0", "Arial", 45); bestScoreValTxt->setPositionX(scoreValTxt->getPositionX()); bestScoreValTxt->setPositionY(bestScoreTxt->getPositionY()); bestScoreValTxt->setTag(bestScoreValTxtTag); this->addChild(bestScoreValTxt); LabelTTF* replayTxt = LabelTTF::create("Replay", "Arial", 45); MenuItemLabel* replayBtn = MenuItemLabel::create(replayTxt); replayBtn->setTag(replayBtnTag); LabelTTF* shareTxt = LabelTTF::create("Share", "Arial", 45); MenuItemLabel* shareBtn = MenuItemLabel::create(shareTxt); Menu* menu = Menu::create(replayBtn, shareBtn, NULL); menu->setPositionX(ScreenUtil::getCenter().x); menu->setPositionY(ScreenUtil::getCenter().y - 70); menu->alignItemsHorizontallyWithPadding(50); menu->setTag(menuTag); this->addChild(menu); }
SocketIOTestLayer::SocketIOTestLayer(void) : _sioClient(NULL) , _sioEndpoint(NULL) { //set the clients to NULL until we are ready to connect Size winSize = Director::getInstance()->getWinSize(); const int MARGIN = 40; const int SPACE = 35; LabelTTF *label = LabelTTF::create("SocketIO Extension Test", "Arial", 28); label->setPosition(Point(winSize.width / 2, winSize.height - MARGIN)); addChild(label, 0); Menu *menuRequest = Menu::create(); menuRequest->setPosition(Point::ZERO); addChild(menuRequest); // Test to create basic client in the default namespace LabelTTF *labelSIOClient = LabelTTF::create("Open SocketIO Client", "Arial", 22); MenuItemLabel *itemSIOClient = MenuItemLabel::create(labelSIOClient, CC_CALLBACK_1(SocketIOTestLayer::onMenuSIOClientClicked, this)); itemSIOClient->setPosition(Point(VisibleRect::left().x + labelSIOClient->getContentSize().width / 2 + 5, winSize.height - MARGIN - SPACE)); menuRequest->addChild(itemSIOClient); // Test to create a client at the endpoint '/testpoint' LabelTTF *labelSIOEndpoint = LabelTTF::create("Open SocketIO Endpoint", "Arial", 22); MenuItemLabel *itemSIOEndpoint = MenuItemLabel::create(labelSIOEndpoint, CC_CALLBACK_1(SocketIOTestLayer::onMenuSIOEndpointClicked, this)); itemSIOEndpoint->setPosition(Point(VisibleRect::right().x - labelSIOEndpoint->getContentSize().width / 2 - 5, winSize.height - MARGIN - SPACE)); menuRequest->addChild(itemSIOEndpoint); // Test sending message to default namespace LabelTTF *labelTestMessage = LabelTTF::create("Send Test Message", "Arial", 22); MenuItemLabel *itemTestMessage = MenuItemLabel::create(labelTestMessage, CC_CALLBACK_1(SocketIOTestLayer::onMenuTestMessageClicked, this)); itemTestMessage->setPosition(Point(VisibleRect::left().x + labelTestMessage->getContentSize().width / 2 + 5, winSize.height - MARGIN - 2 * SPACE)); menuRequest->addChild(itemTestMessage); // Test sending message to the endpoint '/testpoint' LabelTTF *labelTestMessageEndpoint = LabelTTF::create("Test Endpoint Message", "Arial", 22); MenuItemLabel *itemTestMessageEndpoint = MenuItemLabel::create(labelTestMessageEndpoint, CC_CALLBACK_1(SocketIOTestLayer::onMenuTestMessageEndpointClicked, this)); itemTestMessageEndpoint->setPosition(Point(VisibleRect::right().x - labelTestMessageEndpoint->getContentSize().width / 2 - 5, winSize.height - MARGIN - 2 * SPACE)); menuRequest->addChild(itemTestMessageEndpoint); // Test sending event 'echotest' to default namespace LabelTTF *labelTestEvent = LabelTTF::create("Send Test Event", "Arial", 22); MenuItemLabel *itemTestEvent = MenuItemLabel::create(labelTestEvent, CC_CALLBACK_1(SocketIOTestLayer::onMenuTestEventClicked, this)); itemTestEvent->setPosition(Point(VisibleRect::left().x + labelTestEvent->getContentSize().width / 2 + 5, winSize.height - MARGIN - 3 * SPACE)); menuRequest->addChild(itemTestEvent); // Test sending event 'echotest' to the endpoint '/testpoint' LabelTTF *labelTestEventEndpoint = LabelTTF::create("Test Endpoint Event", "Arial", 22); MenuItemLabel *itemTestEventEndpoint = MenuItemLabel::create(labelTestEventEndpoint, CC_CALLBACK_1(SocketIOTestLayer::onMenuTestEventEndpointClicked, this)); itemTestEventEndpoint->setPosition(Point(VisibleRect::right().x - labelTestEventEndpoint->getContentSize().width / 2 - 5, winSize.height - MARGIN - 3 * SPACE)); menuRequest->addChild(itemTestEventEndpoint); // Test disconnecting basic client LabelTTF *labelTestClientDisconnect = LabelTTF::create("Disconnect Socket", "Arial", 22); MenuItemLabel *itemClientDisconnect = MenuItemLabel::create(labelTestClientDisconnect, CC_CALLBACK_1(SocketIOTestLayer::onMenuTestClientDisconnectClicked, this)); itemClientDisconnect->setPosition(Point(VisibleRect::left().x + labelTestClientDisconnect->getContentSize().width / 2 + 5, winSize.height - MARGIN - 4 * SPACE)); menuRequest->addChild(itemClientDisconnect); // Test disconnecting the endpoint '/testpoint' LabelTTF *labelTestEndpointDisconnect = LabelTTF::create("Disconnect Endpoint", "Arial", 22); MenuItemLabel *itemTestEndpointDisconnect = MenuItemLabel::create(labelTestEndpointDisconnect, CC_CALLBACK_1(SocketIOTestLayer::onMenuTestEndpointDisconnectClicked, this)); itemTestEndpointDisconnect->setPosition(Point(VisibleRect::right().x - labelTestEndpointDisconnect->getContentSize().width / 2 - 5, winSize.height - MARGIN - 4 * SPACE)); menuRequest->addChild(itemTestEndpointDisconnect); // Sahred Status Label _sioClientStatus = LabelTTF::create("Not connected...", "Arial", 14, Size(320, 100), Label::HAlignment::LEFT); _sioClientStatus->setAnchorPoint(Point(0, 0)); _sioClientStatus->setPosition(Point(VisibleRect::left().x, VisibleRect::rightBottom().y)); this->addChild(_sioClientStatus); // Back Menu MenuItemFont *itemBack = MenuItemFont::create("Back", CC_CALLBACK_1(SocketIOTestLayer::toExtensionsMainLayer, this)); itemBack->setPosition(Point(VisibleRect::rightBottom().x - 50, VisibleRect::rightBottom().y + 25)); Menu *menuBack = Menu::create(itemBack, NULL); menuBack->setPosition(Point::ZERO); addChild(menuBack); }
// 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 MenuItemImage *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 Menu* pMenu = Menu::create(closeItem, NULL); pMenu->setPosition(Point::ZERO); this->addChild(pMenu, 1); ///////////////////////////// // 3. add your codes below... // add a label shows "Hello World" // create and initialize a label LabelTTF* pLabel = LabelTTF::create("Hello World", "Arial", TITLE_FONT_SIZE); // position the label on the center of the screen pLabel->setPosition(Point(origin.x + visibleSize.width/2, origin.y + visibleSize.height - pLabel->getContentSize().height)); // add the label as a child to this layer this->addChild(pLabel, 1); // add "HelloWorld" splash screen" Sprite* pSprite = Sprite::create("HelloWorld.png"); // position the sprite on the center of the screen pSprite->setPosition(Point(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y)); // add the sprite as a child to this layer this->addChild(pSprite, 0); // initialize flash tinyswf::SWF::initialize(CCFlashLoadAsset, 256*1024); // 256kB buffer for libtess2 tinyswf::Renderer::setInstance(new CCFlashRenderer); tinyswf::FontHandler::setInstance(new CCFlashFontHandler); CCFlash* pFlash = CCFlash::create("test.swf"); pFlash->scheduleUpdate(); this->addChild(pFlash,1); pFlash->getSWF()->get<tinyswf::Text>("_text")->setString( "<p>test<font color='#ff0000'>1234</font>hello world</p><p>font <font color='#00ffff'>color</font> test</p>"); #ifdef USE_HTTP CCHttpRequest* request = new CCHttpRequest(); request->setUrl("https://localhost/codeigniter/user/login"); request->setRequestType(CCHttpRequest::kHttpPost); request->setResponseCallback(this, httpresponse_selector(HelloWorld::onHttpRequestCompleted)); request->setTag("POST login"); std::string uuid; getUUID(uuid); std::string post = "uuid="+uuid; request->setRequestData(post.c_str(), post.length()); CCHttpClient::getInstance()->send(request); request->release(); #endif return true; }