bool FriendLayer::init() { if ( !Layer::init() ) { return false; } auto friendLayer=CSLoader::createNode("FriendLayer.csb"); this->addChild(friendLayer); Button * closeButton = static_cast<Button*>(friendLayer->getChildByName("CloseButton")); Button * okButton = static_cast<Button*>(friendLayer->getChildByName("Button_OK")); fname = static_cast<TextField*>(friendLayer->getChildByName("TextField_Fname")); fshow = static_cast<Text*>(friendLayer->getChildByName("Text_show")); closeButton->addTouchEventListener(this, toucheventselector(FriendLayer::closeEvent)); okButton->addTouchEventListener(this, toucheventselector(FriendLayer::okEvent)); EventDispatcher* eventDispatcher = Director::getInstance()->getEventDispatcher(); EventListenerTouchOneByOne* listener= EventListenerTouchOneByOne::create(); listener->setSwallowTouches(true); listener->onTouchBegan = [](Touch* touch, Event* event){return true;}; listener->onTouchMoved = [](Touch* touch, Event* event){}; listener->onTouchEnded = [](Touch* touch, Event* event){}; listener->onTouchCancelled = [](Touch* touch , Event* event){}; eventDispatcher->addEventListenerWithSceneGraphPriority(listener, friendLayer); //代码为了设置模态窗口 return true; }
void GameLayer::registerEventHandlers() { Director* director = Director::getInstance(); EventDispatcher* eventDispatcher = director->getEventDispatcher(); EventListenerTouchOneByOne* eventListener = EventListenerTouchOneByOne::create(); eventListener->setSwallowTouches(true); eventListener->onTouchEnded = [=](Touch* touch, Event* event){ if (!getAcceptInput()) { return; } Vec2 position = m_tileLayer->convertTouchToNodeSpace(touch); for (auto iterator = m_tileLayer->getChildren().begin(); iterator != m_tileLayer->getChildren().end(); iterator++) { auto child = *iterator; GameTileView* gameTileView = dynamic_cast<GameTileView*>(child); if(gameTileView->getBoundingBox().containsPoint(position)) { if (gameTileView->getGameTile()->getCanMove()) { doSelectGameTileView(gameTileView); } break; } } }; eventListener->onTouchBegan = [](Touch* touch, Event* event){ return true; }; eventListener->onTouchMoved = [](Touch* touch, Event* event){}; eventListener->onTouchCancelled = [](Touch* touch, Event* event){}; eventDispatcher->addEventListenerWithSceneGraphPriority(eventListener, m_tileLayer); }
bool PauseLayer::init() { if (!AlertLayer::init()) { return false; } auto board = this->getBoard(); auto title = Sprite::createWithSpriteFrameName(s_pause_txt); title->setPosition(Vec2(board->getContentSize().width / 2, board->getContentSize().height)); board->addChild(title); // 继续按钮 auto resumeSprite = Sprite::createWithSpriteFrameName(s_resume_btn); auto resumeSpriteActive = Sprite::createWithSpriteFrameName(s_resume_btn_a); auto resumeItem = MenuItemSprite::create(resumeSprite, resumeSpriteActive, CC_CALLBACK_1(PauseLayer::resumeCallBack, this)); resumeItem->setAnchorPoint(Vec2::ZERO); resumeItem->setScale(0.7f); resumeItem->setPosition(Vec2(40, 50)); // 重开按钮 auto restartSprite = Sprite::createWithSpriteFrameName(s_restart_btn); auto restartSpriteActive = Sprite::createWithSpriteFrameName(s_restart_btn_a); auto restartItem = MenuItemSprite::create(restartSprite, restartSpriteActive, CC_CALLBACK_1(PauseLayer::restartCallBack, this)); restartItem->setAnchorPoint(Vec2::ZERO); restartItem->setScale(0.7f); restartItem->setPosition(Vec2(140, 50)); // 回首页按钮 auto goHomeSprite = Sprite::createWithSpriteFrameName(s_go_home_btn); auto goHomeSpriteActive= Sprite::createWithSpriteFrameName(s_go_home_btn_a); auto goHomeItem = MenuItemSprite::create(goHomeSprite, goHomeSpriteActive, CC_CALLBACK_1(PauseLayer::goHomeCallBack, this)); goHomeItem->setAnchorPoint(Vec2::ZERO); goHomeItem->setScale(0.7f); goHomeItem->setPosition(Vec2(240, 50)); auto menu = Menu::create(resumeItem, restartItem, goHomeItem, NULL); menu->setPosition(Vec2::ZERO); board->addChild(menu); EventDispatcher *eventDispatcher = Director::getInstance()->getEventDispatcher(); auto listener = EventListenerTouchOneByOne::create(); listener->setSwallowTouches(true); // 是否吞掉事件让下面的层无法响应 listener->onTouchBegan = CC_CALLBACK_2(PauseLayer::onTouchBegan, this); listener->onTouchMoved = CC_CALLBACK_2(PauseLayer::onTouchMoved, this); listener->onTouchEnded = CC_CALLBACK_2(PauseLayer::onTouchEnded, this); eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); return true; }
void ChatScene::setEventHadlers() { EventDispatcher* pDispatcher = Director::getInstance()->getEventDispatcher(); EventListenerTouchOneByOne* pEventListener = EventListenerTouchOneByOne::create(); pEventListener->setSwallowTouches(true); pEventListener->onTouchBegan = CC_CALLBACK_2(ChatScene::onTouchBegan, this); pEventListener->onTouchMoved = CC_CALLBACK_2(ChatScene::onTouchMoved, this); pEventListener->onTouchEnded = CC_CALLBACK_2(ChatScene::onTouchEnded, this); pDispatcher->addEventListenerWithSceneGraphPriority(pEventListener, this); }
void GameLayer::registerHandler(Node* node, std::function<void(Touch*, Event*)> onTouchEnded) { Director* director = Director::getInstance(); EventDispatcher* eventDispatcher = director->getEventDispatcher(); EventListenerTouchOneByOne* eventListener = EventListenerTouchOneByOne::create(); eventListener->setSwallowTouches(true); eventListener->onTouchEnded = onTouchEnded; eventListener->onTouchBegan = [](Touch* touch, Event* event){ return true; }; eventDispatcher->addEventListenerWithSceneGraphPriority(eventListener, node); }
bool SceneGame::init() { if (!Layer::init()) { return false; } Size visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); _c = new std::vector<Chess*>(); _c->resize(1000); _steps = new std::vector<Step*>(); _steps->reserve(1000); createPlate(); Chess::_d = Director::getInstance()->getWinSize().height / 10; Chess::_offx = Chess::_d; Chess::_offy = Chess::_d / 2; for (int i = 0; i < 32; i++) { _c->at(i) = Chess::create(); _c->at(i)->initChess(i); addChild(_c->at(i)); } EventDispatcher *eventDispatcher = Director::getInstance()->getEventDispatcher(); auto listener = EventListenerTouchOneByOne::create(); listener->onTouchBegan = CC_CALLBACK_2(SceneGame::onTouchBegan, this); listener->onTouchEnded = CC_CALLBACK_2(SceneGame::onTouchEnd, this); eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); _selectid = 1; _selectSprite = Sprite::create("selected.png"); _selectSprite->setVisible(false); addChild(_selectSprite); _selectSprite->setScale(0.6f); _selectSprite->setZOrder(100); _bRedTurn = true; _steps->clear(); addCtrlPanel(); return true; }
bool CaiKuangLayer::init() { if ( !Layer::init() ) { return false; } auto caiKuangLayer=CSLoader::createNode("CaiKuangLayer.csb"); addChild(caiKuangLayer); tt = time(NULL); t =localtime(&tt); //取到当前时间 // std::cout<<t->tm_hour<<std::endl; // std::cout<<t->tm_min<<std::endl; Button * closeButton = static_cast<Button*>(caiKuangLayer->getChildByName("CloseButton")); cStartButton = static_cast<Button*>(caiKuangLayer->getChildByName("ClassStart")); inviteButton = static_cast<Button*>(caiKuangLayer->getChildByName("invite")); inviteButton->addTouchEventListener(this, toucheventselector(CaiKuangLayer::inviteEvent)); // cEndButton = static_cast<Button*>(jiaoXueLayer->getChildByName("ClassOver")); sStartButton = static_cast<Button*>(caiKuangLayer->getChildByName("StudyStart")); // sEndButton = static_cast<Button*>(jiaoXueLayer->getChildByName("StudyOver")); closeButton->addTouchEventListener(this, toucheventselector(CaiKuangLayer::closeEvent)); cStartButton->addTouchEventListener(this, toucheventselector(CaiKuangLayer::classEvent)); sStartButton->addTouchEventListener(this, toucheventselector(CaiKuangLayer::studyEvent)); EventDispatcher* eventDispatcher = Director::getInstance()->getEventDispatcher(); EventListenerTouchOneByOne* listener= EventListenerTouchOneByOne::create(); listener->setSwallowTouches(true); listener->onTouchBegan = [](Touch* touch, Event* event){return true;}; listener->onTouchMoved = [](Touch* touch, Event* event){}; listener->onTouchEnded = [](Touch* touch, Event* event){}; listener->onTouchCancelled = [](Touch* touch , Event* event){}; eventDispatcher->addEventListenerWithSceneGraphPriority(listener, caiKuangLayer); //代码为了设置模态窗口 return true; }
void CLayer::onEnter() { Layer::onEnter(); log("HelloWorld onEnter"); auto listener = EventListenerKeyboard::create(); listener->onKeyPressed = [](EventKeyboard::KeyCode keyCode, Event* event) { log("Key with keycode %d pressed", keyCode); }; listener->onKeyReleased = [](EventKeyboard::KeyCode keyCode, Event* event) { log("Key with keycode %d released", keyCode); }; EventDispatcher* eventDispatcher = Director::getInstance()->getEventDispatcher(); eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); }
void BaseLayerBuilder::build() { this->rootLayer->addChild(uiLayer, 1, BaseLayer::UI_LAYER_TAG); EventListenerTouchAllAtOnce* listener = EventListenerTouchAllAtOnce::create(); listener->setEnabled(true); for (std::map<std::string, std::function<void(const std::vector<Touch*>&, Event*)>>::iterator it = this->touchEventHandlerMap.begin(); it != this->touchEventHandlerMap.end(); ++it) { if ("touchBegan" == it->first) { listener->onTouchesBegan = it->second; } else if ("touchMove" == it->first) { listener->onTouchesMoved = it->second; listener->onTouchesCancelled = it->second; } else if ("touchEnd" == it->first) { listener->onTouchesEnded = it->second; } } EventDispatcher* dip = Director::getInstance()->getEventDispatcher(); dip->addEventListenerWithSceneGraphPriority(listener, this->rootLayer); return; }
bool MyScene::init() { if (!Layer::init()) { return false; } auto bg = Sprite::create("HelloWorld.png"); bg->setPosition(Vec2(480, 320)); addChild(bg); bg->setVisible(false); /* SpriteFrameCache::getInstance()->addSpriteFramesWithFile("a.plist"); Vector<SpriteFrame *> vec; char fileName[10]; for (int i = 1; i<=10; i++) { sprintf(fileName, "0%d.png",i); SpriteFrame * frame = SpriteFrameCache::getInstance()->getSpriteFrameByName(fileName); vec.pushBack(frame); } Animation * animation = Animation::createWithSpriteFrames(vec); animation->setDelayPerUnit(0.1); animation->setLoops(1); Animate * animate = Animate::create(animation); RepeatForever * repeatAction = RepeatForever::create(animate); bg->runAction(repeatAction); */ EventDispatcher * dispatcher = Director::getInstance()->getEventDispatcher(); EventListenerTouchAllAtOnce * listener = EventListenerTouchAllAtOnce::create(); listener->onTouchesBegan = CC_CALLBACK_2(MyScene::onTouchesBegan, this); listener->onTouchesMoved = CC_CALLBACK_2(MyScene::onTouchesMoved, this); listener->onTouchesEnded = CC_CALLBACK_2(MyScene::onTouchesEnded, this); dispatcher->addEventListenerWithSceneGraphPriority(listener, this); //EventListenerTouchOneByOne * listener2 = listener->clone(); //dispatcher->addEventListenerWithSceneGraphPriority(listener2, bg); return true; }
bool Scene_Title::init() { auto background = CCSprite::create("title/main.png"); background->setAnchorPoint(ccp(0, 0)); this->addChild(background, 0); EventDispatcher* dispatcher = Director::getInstance()->getEventDispatcher(); auto* touchListener = EventListenerTouchOneByOne::create(); touchListener->setSwallowTouches(true); touchListener->onTouchBegan = CC_CALLBACK_2(Scene_Title::onTouchBegan, this); touchListener->onTouchMoved = CC_CALLBACK_2(Scene_Title::onTouchMoved, this); touchListener->onTouchEnded = CC_CALLBACK_2(Scene_Title::onTouchEnded, this); dispatcher->addEventListenerWithSceneGraphPriority(touchListener, this); CDataManager::getInstance()->LoadPlayerData(); SimpleAudioEngine::sharedEngine()->playBackgroundMusic("music/title.mp3", true); return true; }
bool LogoScene::init() { if ( !Layer::init() ) { return false; } CocosDenshion::SimpleAudioEngine::sharedEngine()->playBackgroundMusic("sounds/LoadingBG.mp3"); this->setTouchEnabled(true); EventDispatcher* eventDispatcher = Director::getInstance()->getEventDispatcher(); auto listen = EventListenerTouchOneByOne::create(); listen->onTouchBegan = CC_CALLBACK_2(LogoScene::onTouchBegan, this); eventDispatcher->addEventListenerWithSceneGraphPriority(listen, this); auto logo1 = Sprite::create("logos/logo_1.jpg"); auto logo2 = Sprite::create("logos/logo_2.jpg"); auto logo3 = Sprite::create("logos/logo_3.jpg"); auto logo4 = Sprite::create("logos/logo_4.png"); auto logo5 = Sprite::create("logos/logo_5.jpg"); vecLogo.pushBack(logo1); vecLogo.pushBack(logo2); vecLogo.pushBack(logo3); vecLogo.pushBack(logo4); vecLogo.pushBack(logo5); nLogoNum = 0; isEndLogo = false; isEndAddResource = false; visibleSize = Director::getInstance()->getVisibleSize(); loadingSprite = Sprite::create("logos/loading.png"); loadingSprite->setPosition(visibleSize / 2); addChild(loadingSprite, 1); loadingSprite->setVisible(false); changeLogo(); addResource(); return true; }
// on "init" you need to initialize your instance bool PuzzleScene::init() { ////////////////////////////// // 1. super init first if ( !Layer::init() ) { return false; } Size visibleSize = Director::getInstance()->getVisibleSize(); Point origin = Director::getInstance()->getVisibleOrigin(); ///////////////////////////// // 2. add a menu item with "X" image, which is clicked to quit the program // you may modify it. // add a "close" icon to exit the progress. it's an autorelease object auto closeItem = MenuItemImage::create( "CloseNormal.png", "CloseSelected.png", CC_CALLBACK_1(PuzzleScene::menuCloseCallback, this)); closeItem->setPosition(Point(origin.x + visibleSize.width - closeItem->getContentSize().width/2 , origin.y + closeItem->getContentSize().height/2)); // create menu, it's an autorelease object auto menu = Menu::create(closeItem, NULL); menu->setPosition(Point::ZERO); this->addChild(menu, 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(Point(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 "PuzzleScene" splash screen" auto sprite = Sprite::create("HelloWorld.png"); // position the sprite on the center of the screen sprite->setPosition(Point(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y)); // add the sprite as a child to this layer this->addChild(sprite, 0); // タイルエディターで作った画像の作成 mTMXObject = TMXManager::getInstance()->CreateTMXObject("mapdata/map1.tmx"); this->addChild(mTMXObject->GetTMXTiledMap(), 0); this->scheduleUpdate(); // タッチイベント登録らしい EventDispatcher* dispatcher = Director::getInstance()->getEventDispatcher(); EventListenerTouchOneByOne* listener = EventListenerTouchOneByOne::create(); listener->onTouchBegan = CC_CALLBACK_2(PuzzleScene::onTouchBegan, this); listener->onTouchMoved = CC_CALLBACK_2(PuzzleScene::onTouchMoved, this); listener->onTouchEnded = CC_CALLBACK_2(PuzzleScene::onTouchEnded, this); listener->onTouchCancelled = CC_CALLBACK_2(PuzzleScene::onTouchCancelled, this); dispatcher->addEventListenerWithSceneGraphPriority(listener, this); // マルチタッチ。忘れないように書いておくだけ //EventDispatcher* dispatcher2 = Director::getInstance()->getEventDispatcher(); //EventListenerTouchAllAtOnce* listener2 = EventListenerTouchAllAtOnce::create(); //listener2->onTouchesBegan = CC_CALLBACK_2(PuzzleScene::onTouchesBegan, this); //listener2->onTouchesMoved = CC_CALLBACK_2(PuzzleScene::onTouchesMoved, this); //listener2->onTouchesCancelled = CC_CALLBACK_2(PuzzleScene::onTouchesCancelled, this); //listener2->onTouchesEnded = CC_CALLBACK_2(PuzzleScene::onTouchesEnded, this); //dispatcher2->addEventListenerWithSceneGraphPriority(listener2, this); SpriteCreator::getInstance()->AddSpriteFrameCache("putobject/sample_texturepacker.plist"); return true; }
bool LobbyScene::init() { if (!Layer::init()) { return false; } Size visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); myInfoLayer = MyInfoLayer::create(); myInfoLayer->retain(); myInfoLayer->setAnchorPoint(Vec2(0, 0)); myInfoLayer->setPosition(Vec2(0, MY_INFO_LAYER_Y)); addChild(myInfoLayer, 0, TAG_MY_INFO_LAYER); menuButtonLayer = MenuButtonLayer::create(); menuButtonLayer->retain(); menuButtonLayer->setAnchorPoint(Vec2(0,0)); menuButtonLayer->setPosition(Vec2(0,0)); addChild(menuButtonLayer, 0, TAG_MENU_BUTTON_LAYER); lobbyGameLayer = LobbyGameLayer::create(); lobbyGameLayer->retain(); lobbyGameLayer->setAnchorPoint(Vec2(0, 0)); lobbyGameLayer->setPosition(Vec2(0, LOBBY_LAYER_Y)); lobbyChannelLayer = LobbyChannelLayer::create(); lobbyChannelLayer->retain(); lobbyChannelLayer->setAnchorPoint(Vec2(0, 0)); lobbyChannelLayer->setPosition(Vec2(0, LOBBY_LAYER_Y)); lobbyFriendLayer = LobbyFriendLayer::create(); lobbyFriendLayer->retain(); lobbyFriendLayer->setAnchorPoint(Vec2(0, 0)); lobbyFriendLayer->setPosition(Vec2(0, LOBBY_LAYER_Y)); lobbyClanLayer = LobbyClanLayer::create(); lobbyClanLayer->retain(); lobbyClanLayer->setAnchorPoint(Vec2(0, 0)); lobbyClanLayer->setPosition(Vec2(0, LOBBY_LAYER_Y)); lobbyRankingLayer = LobbyRankingLayer::create(); lobbyRankingLayer->retain(); lobbyRankingLayer->setAnchorPoint(Vec2(0, 0)); lobbyRankingLayer->setPosition(Vec2(0, LOBBY_LAYER_Y)); lobbyBoardLayer = LobbyBoardLayer::create(); lobbyBoardLayer->retain(); lobbyBoardLayer->setAnchorPoint(Vec2(0, 0)); lobbyBoardLayer->setPosition(Vec2(0, LOBBY_LAYER_Y)); addChild(lobbyGameLayer, 1, TAG_LOBBY_GAME_LAYER); currentLayer = CURRENT_LAYER_GAME; GameClient::GetInstance().currentScene = LOBBY_SCENE_NOW; // Size editboxSize = CCSizeMake(500, 70); // textBox = EditBox::create(editboxSize, Scale9Sprite::create("typefield_01.png")); // textBox->setAnchorPoint(ccp(0, 0)); // textBox->setPosition(ccp(0, 0)); // textBox->setFontSize(20); // textBox->setFontColor(ccWHITE); // textBox->setMaxLength(15); // textBox->setPlaceHolder("CHATTING"); // textBox->setReturnType(EditBox::KeyboardReturnType::DONE); // textBox->setInputMode(EditBox::InputMode::ANY); // textBox->setDelegate(this); // this->addChild(textBox); // menuLayer = Layer::create(); // menuLayer->setContentSize(Size(SCREEN_WIDTH / 4, SCREEN_HEIGHT)); // menuLayer->setAnchorPoint(Vec2(0, 0)); // menuLayer->setPosition(0, 0); // auto menuLayerbackGroundSprite = Sprite::create("back_ground_01.png"); // menuLayerbackGroundSprite->setAnchorPoint(Vec2(0, 0)); // menuLayerbackGroundSprite->setPosition(0, 0); // menuLayerbackGroundSprite->setScale((SCREEN_WIDTH / 4) / menuLayerbackGroundSprite->getContentSize().width, SCREEN_HEIGHT / menuLayerbackGroundSprite->getContentSize().height); // menuLayer->addChild(menuLayerbackGroundSprite, 0); // this->addChild(menuLayer, 100201); // // userListLayer = UserListLayer::create(); // userListLayer->setAnchorPoint(Vec2(0, 0)); // userListLayer->setPosition(Vec2(0, 0)); // userListLayer->setContentSize(Size(SCREEN_WIDTH / 4, SCREEN_HEIGHT * 2)); // // // scrollView = ScrollView::create(Size(SCREEN_WIDTH / 4, SCREEN_HEIGHT), userListLayer); // scrollView->retain(); // scrollView->setBounceable(false); // scrollView->setDirection(ScrollView::Direction::VERTICAL); // scrollView->setAnchorPoint(Vec2(0, 0)); // scrollView->setPosition(0, 0); // menuLayer->addChild(scrollView, 1); // scrollView->setContentOffset(Vec2(0, (-1 * userListLayer->getContentSize().height)), false); /* auto moveChannel = MenuItemImage::create( "channel_list.png", "channel_list.png", CC_CALLBACK_1(LobbyScene::GetChannelList, this)); moveChannel->setAnchorPoint(ccp(0, 0)); moveChannel->setPosition(0, 1000); auto userList = MenuItemImage::create( "user_list.png", "user_list.png", CC_CALLBACK_1(LobbyScene::GetUserList, this)); userList->setAnchorPoint(ccp(0, 0)); userList->setPosition(0, 900); auto friendList = MenuItemImage::create( "friend_list.png", "friend_list.png", CC_CALLBACK_1(LobbyScene::GetFriendList, this)); friendList->setAnchorPoint(ccp(0, 0)); friendList->setPosition(0, 800); auto roomList = MenuItemImage::create( "room_list.png", "room_list.png", CC_CALLBACK_1(LobbyScene::GetRoomList, this)); roomList->setAnchorPoint(ccp(0, 0)); roomList->setPosition(0, 700); auto requestList = MenuItemImage::create( "request_list.png", "request_list.png", CC_CALLBACK_1(LobbyScene::GetRequestList, this)); requestList->setAnchorPoint(ccp(0, 0)); requestList->setPosition(0, 600); int reqCount = GameClient::GetInstance().requestInfoCount; std::string reqCountStr; GameClient::intToString(reqCountStr, reqCount); requestCountLabel = LabelTTF::create(reqCountStr, "Arial", 24); requestCountLabel->setColor(Color3B(0, 0, 0)); requestCountLabel->setPosition(500, 650); menuLayer->addChild(requestCountLabel, 101); Menu* menu1 = Menu::create(moveChannel, userList, friendList, roomList, requestList, NULL); menu1->setAnchorPoint(ccp(0, 0)); menu1->setPosition(ccp(0, 0)); menuLayer->addChild(menu1, 100, TAG_MENU); channelListLayer = ChannelListLayer::create(); channelListLayer->retain(); userListLayer = UserListLayer::create(); userListLayer->retain(); roomListLayer = RoomListLayer::create(); roomListLayer->retain(); RoomInfo roomInfo[3]; memset(roomInfo, 0, sizeof(roomInfo)); for (int i = 0; i < 3; i++) { roomInfo[i].roomNo = i; memcpy(roomInfo[i].roomName, "room", sizeof(5)); } roomListLayer->SetRoomList(3, roomInfo); requestListLayer = RequestListLayer::create(); requestListLayer->retain(); requestListLayer->SetRequestList(); */ EventDispatcher* dispatcher = Director::getInstance()->getEventDispatcher(); //터치 위치를 알려주는 리스너. 단일 터치. //바로 만들어쓰는 식별자는 auto를 사용한다. auto positionListener = EventListenerTouchOneByOne::create(); //zOrder에 따라 밑에 깔린애도 동작할지 아닐지를 결정한다. positionListener->setSwallowTouches(true); //콜백 함수 대입 positionListener->onTouchBegan = CC_CALLBACK_2(LobbyScene::onTouchBegan, this); //디스패처를 이용해 객체와 리스너를 이어준다. 화면 전체를 터치할 수 있게 만들어야 하므로 객체는 this dispatcher->addEventListenerWithSceneGraphPriority(positionListener, this); return true; }
//层进入的时候会调用该函数,进行物理世界的碰撞检测 void FirstBossScene::onEnter() { Layer::onEnter(); Size visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); auto listener = EventListenerPhysicsContact::create(); listener->onContactBegin = [=](PhysicsContact& contact) { auto spriteA = (Sprite *)contact.getShapeA()->getBody()->getNode(); auto spriteB = (Sprite *)contact.getShapeB()->getBody()->getNode(); int tag1 = spriteA->getTag(); int tag2 = spriteB->getTag(); Vec2 vec1 = spriteA->getPosition(); Vec2 vec2 = spriteB->getPosition(); //当人物和不可碰撞鱼碰撞后 if (tag1 + tag2 == 206 || tag1 + tag2 == 110) { blood_for_man--; if (blood_for_man < 0) { gameOver(); } auto scoreSpire = (Label *)this->getChildByTag(100); scoreSpire->setString(String::createWithFormat("HP:%d", blood_for_man)->_string); auto * system = ParticleSystemQuad::create("particle_texture.plist"); if (tag1 == 104) { system->setPosition(vec1); this->addChild(system); spriteA->removeFromParent(); } else { system->setPosition(vec2); this->addChild(system); spriteB->removeFromParent(); } } else if (tag1 + tag2 == 207 || tag1 + tag2 == 111) {//当人物和可碰撞鱼碰撞后 Magic += 3; auto * system = ParticleSystemQuad::create("particle_texture.plist"); if (tag1 == 105) { system->setPosition(vec1); this->addChild(system); spriteA->removeFromParent(); } else { system->setPosition(vec2); this->addChild(system); spriteB->removeFromParent(); } if (getTypeSkill() == 3) { manscale = manscale * 0.9; speed_for_man++; if (manscale < 0.4) { manscale = 0.4; } if (speed_for_man > 10) { speed_for_man = 10; } man->setScale(manscale); } } else if (tag1 + tag2 == 112) {//当Boss被武器一击中时 blood_for_boss -= weapon_eff; auto * system = ParticleSystemQuad::create("particle_texture.plist"); if (tag1 == 1) { system->setPosition(vec1); this->addChild(system); spriteA->removeFromParent(); } else { system->setPosition(vec2); this->addChild(system); spriteB->removeFromParent(); } // 发出音效 SimpleAudioEngine::getInstance()->playEffect("music/boom.mp3"); //更新boss的血量 auto scoreSpire = (Label *)this->getChildByTag(121); scoreSpire->setString(String::createWithFormat("HP:%d", blood_for_boss)->_string); if (blood_for_boss <= 0) { //这里要有Bosss死亡的特效 win(); } } else if (tag1 + tag2 == 113) {//当Boss被武器二击中时 blood_for_boss --; auto * system = ParticleSystemQuad::create("particle_texture.plist"); if (tag1 == 2) { system->setPosition(vec1); this->addChild(system); spriteA->removeFromParent(); } else { system->setPosition(vec2); this->addChild(system); spriteB->removeFromParent(); } //更新boss的血量 auto scoreSpire = (Label *)this->getChildByTag(121); scoreSpire->setString(String::createWithFormat("HP:%d", blood_for_boss)->_string); if (blood_for_boss <= 0) { //这里要有Bosss死亡的特效 win(); } } return true; }; //注册监听器 EventDispatcher * eventDispatcher = Director::getInstance()->getEventDispatcher(); eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); }
bool IdleLayer::init() { if(!LayerColor::init()) { return false; } Director* director = Director::getInstance(); Vec2 visibleOrigin = director->getVisibleOrigin(); Size visibleSize = director->getVisibleSize(); setContentSize(visibleSize); GameLayer* gameLayer = GameLayer::create(IDLE); gameLayer->getUiLayer()->setVisible(false); addChild(gameLayer); // gameLayer->setColor(Color3B::RED); Widget* idleForeground = GUIReader::getInstance()->widgetFromJsonFile("ui/connect/idle_foreground.json"); Node* background = idleForeground->getChildByName("background"); background->setContentSize(visibleSize); Text* touchToStart = dynamic_cast<Text*>(idleForeground->getChildByName("touchToStart")); touchToStart->setString(LANG->getLang("touch_to_start")); touchToStart->setPosition(Vec2(visibleSize.width/2, visibleSize.height/2)); touchToStart->runAction(RepeatForever::create(Blink::create(1, 1))); addChild(idleForeground); EventDispatcher* eventDispatcher = director->getEventDispatcher(); EventListenerTouchOneByOne* eventListener = EventListenerTouchOneByOne::create(); eventListener->setSwallowTouches(true); eventListener->onTouchEnded = [=](Touch* touch, Event* event){ auto scene = MainMenuLayer::createScene(); director->replaceScene(scene); }; eventListener->onTouchBegan = [](Touch* touch, Event* event){ return true; }; eventDispatcher->addEventListenerWithSceneGraphPriority(eventListener, touchToStart); CallFunc* connectAction = CallFunc::create([=](){ auto game = gameLayer->getGame(); if (!game->isEmpty() && gameLayer->getAcceptInput()) { auto path = game->getRandomPath(); if(path) { auto front = path->getPath().front(); auto back = path->getPath().back(); gameLayer->doConnect(front->getX(), front->getY(), back->getX(), back->getY()); } } }); CallFunc* shuffleAction = CallFunc::create([=](){ auto game = gameLayer->getGame(); if (!game->isEmpty()) { if (rand()%10 == 0) { gameLayer->doShuffle(); } } }); runAction(RepeatForever::create(Sequence::create(DelayTime::create(1.5), connectAction, shuffleAction, NULL))); return true; }
bool GameUILayer::init() { CCLayer::init(); waitInitUIQueue.push(UI_ZORDER_INIT); waitInitUIQueue.push(UI_ZORDER_ROLE_HEAD); waitInitUIQueue.push(UI_ZORDER_NPC_DIALOG); waitInitUIQueue.push(UI_ZORDER_TASK_DIALOG); //初始化面板关系 int panelIdx[] = {UI_ZORDER_ROLE,UI_ZORDER_SOCIETY,UI_ZORDER_MYTEAM,UI_ZORDER_BACKPACK,UI_ZORDER_SMALLMAP,UI_ZORDER_PET,\ UI_ZORDER_REFINE,UI_ZORDER_GUILD,UI_ZORDER_SETTING,UI_ZORDER_AUTOGAME,UI_ZORDER_GOALS,UI_ZORDER_MOLD,UI_ZORDER_REBORN,\ UI_ZORDER_SHOPPANEL,UI_ZORDER_MAIL_PANEL,/*UI_ZORDER_INSTANCETIP*/UI_ZORDER_TASK_PANEL,UI_ZORDER_CHAT,UI_ZORDER_SKILL,\ UI_ZORDER_STALL_PANEL,UI_ZORDER_PRAY_PANEL,UI_ZORDER_ACTIVITY,UI_ZORDER_RANK_PANEL,UI_ZORDER_DANMEDICINE_PANEL,UI_ZORDER_BATTLE_FIELD,\ UI_ZORDER_OFFLINE_EXP_PANEL,UI_ZORDER_TASK_DIALOG,UI_ZORDER_MOUNT}; int counter = sizeof(panelIdx)/sizeof(panelIdx[0]); char relation[sizeof(panelIdx)/sizeof(panelIdx[0])][sizeof(panelIdx)/sizeof(panelIdx[0])] = {//0:自己,1:互斥,2:共存 {0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, {1,0,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, {1,2,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1}, {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0} }; for (int i=0;i<counter;i++) { std::map<int, char> relationDic; for (int j=0;j<counter;j++) { relationDic.insert(std::map<int,char>::value_type(panelIdx[j], relation[i][j])); } relationshipBetweenPanel.insert(std::map<int, std::map<int,char> >::value_type(panelIdx[i], relationDic)); } GameGobal::getInstance().getLoadingLayer()->addTotalSize(waitInitUIQueue.size()); this->setTouchEnabled(true); this->setTouchMode(Touch::DispatchMode::ONE_BY_ONE); EventDispatcher* eventDispatcher = Director::getInstance()->getEventDispatcher(); auto oneTouch = EventListenerTouchOneByOne::create(); oneTouch->onTouchBegan = CC_CALLBACK_2(GameUILayer::onTouchBegan,this); oneTouch->onTouchMoved = CC_CALLBACK_2(GameUILayer::onTouchMoved,this); oneTouch->onTouchEnded = CC_CALLBACK_2(GameUILayer::onTouchEnded,this); oneTouch->onTouchCancelled = CC_CALLBACK_2(GameUILayer::onTouchCancelled,this); oneTouch->setSwallowTouches(true);//不向下传递触摸 eventDispatcher->addEventListenerWithSceneGraphPriority(oneTouch,this); return true; }
bool WelComeLayer::init(){ if (!Layer::init()) { return false; } auto visibleSize = Director::getInstance()->getVisibleSize(); auto origin = Director::getInstance()->getVisibleOrigin(); background = ImgLoader::getInstance()->getSpriteFramesByName("deepocean_background_strip.png"); background->setPosition(visibleSize.width/2 + origin.x,visibleSize.height/2 + origin.y); background->setScale(visibleSize.width/background->getContentSize().width, visibleSize.height/background->getContentSize().height); this->addChild(background,0); Sprite * wreckboard = ImgLoader::getInstance()->getSpriteFramesByName("deepocean_background_wreck1.png"); wreckboard->setPosition(wreckboard->getContentSize().width/4 + visibleSize.width/2,visibleSize.height/2 + origin.y); wreckboard->setScale(1.5, visibleSize.height/wreckboard->getContentSize().height); this->addChild(wreckboard,1); shinei = ImgLoader::getInstance()->getSpriteFramesByName("mainMenuBackground.png"); shinei->setPosition(visibleSize.width/2,visibleSize.height/2); shinei->setScale(visibleSize.width/shinei->getContentSize().width, visibleSize.height/shinei->getContentSize().height); this->addChild(shinei,3); Sprite * labellogo = ImgLoader::getInstance()->getSpriteFramesByName("submarine_logo1.png"); labellogo->setPosition(shinei->getContentSize().width/9, visibleSize.height/2 + origin.y); labellogo->setScale(visibleSize.width/shinei->getContentSize().width , visibleSize.height/shinei->getContentSize().height); this->addChild(labellogo,2); this->sand = Sprite::createWithSpriteFrameName("deepocean_foreground_sand1.png"); this->sand->setPosition(this->sand->getContentSize().width-10.0f,origin.y + this->sand->getContentSize().height/2); this->addChild(this->sand,2); Sprite * scoreboard = ImgLoader::getInstance()->getSpriteFramesByName("menu_best.png"); scoreboard->setPosition(visibleSize.width/2-scoreboard->getContentSize().width/2,150); this->addChild(scoreboard,4); this->plane = ImgLoader::getInstance()->getSpriteFramesByName("submarine_mockup_sub.png"); this->plane->setRotation(-10); ActionInterval * up = MoveBy::create(0.4f, Point(0,8)); ActionInterval * upBack = up->reverse(); Action *swingAction = RepeatForever::create(Sequence::create(up,upBack, NULL)); this->plane->runAction(swingAction); this->plane->setPosition(Point(origin.x +this->plane->getContentSize().width/2 , origin.y + 100)); this->addChild(this->plane,5); this->labelStart = Label::createWithTTF("click here to start", "fonts/Marker Felt.ttf", 25); this->labelStart->setPosition(visibleSize.width/2,visibleSize.height/2); ActionInterval *scale = ScaleTo::create(2, 2.5); ActionInterval *scaleback = ScaleTo::create(2, 1.5); Action * action = RepeatForever::create(Sequence::create(scale,scaleback,NULL)); this->labelStart->runAction(action); this->addChild(this->labelStart,6); //this->setTouchEnabled(true); EventDispatcher* eventDispatcher = Director::getInstance()->getEventDispatcher(); listener= EventListenerTouchOneByOne::create(); //listener->setSwallowTouches(true); listener->onTouchBegan = CC_CALLBACK_2(WelComeLayer::CheckTouchLabelStart,this); eventDispatcher->addEventListenerWithSceneGraphPriority(listener,this); return true; }
void GamePlayLayer::onEnter() { Layer::onEnter(); Size visibleSize = Director::getInstance()->getVisibleSize(); //初始化暂停按钮. auto pauseSprite = Sprite::createWithSpriteFrameName("gameplay.button.pause.png"); auto pauseMenuItem = MenuItemSprite::create(pauseSprite, pauseSprite, CC_CALLBACK_1(GamePlayLayer::menuPauseCallback, this)); auto pauseMenu = Menu::create(pauseMenuItem, NULL); pauseMenu->setPosition(Vec2(30, visibleSize.height - 28)); this->addChild(pauseMenu,20,999); //添加陨石1. auto stone1 = Enemy::createWithEnemyTypes(EnemyTypeStone); stone1->setVelocity(Vec2(0, -100)); this->addChild(stone1, 10 , GameSceneNodeBatchTagEnemy); //添加行星. auto planet = Enemy::createWithEnemyTypes(EnemyTypePlanet); planet->setVelocity(Vec2(0, -50)); this->addChild(planet, 10 , GameSceneNodeBatchTagEnemy); //添加敌机1. auto enemyFighter1 = Enemy::createWithEnemyTypes(EnemyTypeEnemy1); enemyFighter1->setVelocity(Vec2(0, -80)); this->addChild(enemyFighter1, 10 , GameSceneNodeBatchTagEnemy); //添加敌机2. auto enemyFighter2 = Enemy::createWithEnemyTypes(EnemyTypeEnemy2); enemyFighter2->setVelocity(Vec2(0, -100)); this->addChild(enemyFighter2, 10 , GameSceneNodeBatchTagEnemy); //玩家的飞机. this->fighter = Fighter::createWithSpriteFrameName("gameplay.fighter.png"); this->fighter->setHitPoints(5); this->fighter->setPosition(Vec2(visibleSize.width / 2, 70)); this->addChild(this->fighter, 10, GameSceneNodeTagFighter); //注册 触摸飞机事件监听器 touchFighterlistener = EventListenerTouchOneByOne::create(); touchFighterlistener->setSwallowTouches(true); //移动飞机. touchFighterlistener->onTouchBegan = [](Touch* touch, Event* event) { return true; }; touchFighterlistener->onTouchMoved = [](Touch* touch, Event* event) { auto target = event->getCurrentTarget(); target->setPosition(target->getPosition() + touch->getDelta()); }; // 添加 触摸飞机事件监听器 EventDispatcher* eventDispatcher = Director::getInstance()->getEventDispatcher(); eventDispatcher->addEventListenerWithSceneGraphPriority(touchFighterlistener, this->fighter); //注册 碰撞事件监听器 contactListener = EventListenerPhysicsContact::create(); contactListener->onContactBegin = [this](PhysicsContact& contact) { auto spriteA = contact.getShapeA()->getBody()->getNode(); auto spriteB = contact.getShapeB()->getBody()->getNode(); Node* enemy1 = nullptr; ////////////////////////////检测 飞机与敌人的碰撞 start////////////////////////////////// log("A = %d ------------ B = %d", spriteA->getTag(), spriteB->getTag()); if (spriteA->getTag() == GameSceneNodeTagFighter && spriteB->getTag() == GameSceneNodeBatchTagEnemy) { enemy1 = spriteB; } if (spriteA->getTag() == GameSceneNodeBatchTagEnemy && spriteB->getTag() == GameSceneNodeTagFighter) { enemy1 = spriteA; } if (enemy1 != nullptr) {//发生碰撞 this->handleFighterCollidingWithEnemy((Enemy*)enemy1); return false; } /////////////////////////检测 飞机与敌人的碰撞 end///////////////////////////////////// ////////////////////////////检测 炮弹与敌人的碰撞 start//////////////////////////////// Node* enemy2 = nullptr; if (spriteA->getTag() == GameSceneNodeBatchTagBullet && spriteB->getTag() == GameSceneNodeBatchTagEnemy) { //不可见的炮弹不发生碰撞 if (!spriteA->isVisible()) return false; //使得炮弹消失 spriteA->setVisible(false); enemy2 = spriteB; } if (spriteA->getTag() == GameSceneNodeBatchTagEnemy && spriteB->getTag() == GameSceneNodeBatchTagBullet) { //不可见的炮弹不发生碰撞 if (!spriteB->isVisible()) return false; //使得炮弹消失 spriteB->setVisible(false); enemy2 = spriteA; } if (enemy2 != nullptr) {//发生碰撞 this->handleBulletCollidingWithEnemy((Enemy*)enemy2); return false; } /////////////////////////检测 炮弹与敌人的碰撞 end///////////////////////////////////// return false; }; eventDispatcher->addEventListenerWithFixedPriority(contactListener,1); //每0.2s 调用shootBullet函数发射1发炮弹. this->schedule(schedule_selector(GamePlayLayer::shootBullet), 0.2f); this->score = 0; this->scorePlaceholder = 0; //在状态栏中设置玩家的生命值 this->updateStatusBarFighter(); //在状态栏中显示得分 this->updateStatusBarScore(); }
bool GameScene::init(bool _clickRed) { if (!Layer::init()){ return false; } this->aiPlayer = new AIPlayer(this); clickRed = _clickRed; Size visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); auto closeItem = MenuItemImage::create( "CloseNormal.png", "CloseSelected.png", CC_CALLBACK_1(GameScene::menuCloseCallback, this)); closeItem->setPosition(Vec2(origin.x + visibleSize.width - closeItem->getContentSize().width / 2, origin.y + closeItem->getContentSize().height / 2)); MenuItemImage* backMenu = MenuItemImage::create("res/regret.png", "res/regret_selected.png", CC_CALLBACK_1(GameScene::backQIMenuCallback, this)); backMenu->setPosition(Vec2(visibleSize.width - 200, visibleSize.height / 2 - 100)); MenuItemImage* newGameMenu = MenuItemImage::create("res/new.png", "res/new_selected.png", CC_CALLBACK_1(GameScene::newGameMenuCallback, this)); newGameMenu->setPosition(Vec2(visibleSize.width - 200, visibleSize.height / 2)); auto menu = Menu::create(closeItem, backMenu, newGameMenu, NULL); menu->setPosition(Vec2::ZERO); this->addChild(menu, 1); /* auto label = Label::createWithTTF(getStringByKey("GuideStart"), "fonts/fangzheng.ttf", 24); label->setPosition(Vec2(origin.x + visibleSize.width/2, origin.y + visibleSize.height - label->getContentSize().height)); this->addChild(label, 1); */ Vec2 offset = Vec2(20.0, 10.0); auto floor = Sprite::create("res/floor.png"); floor->setPosition(Vec2(visibleSize.width / 2 + origin.x, visibleSize.height / 2 + origin.y)); floor->setScaleX(visibleSize.width / floor->getContentSize().width); floor->setScaleY(visibleSize.height / floor->getContentSize().height); this->addChild(floor); Sprite* qipan = Sprite::create("res/background.png"); qipan->setAnchorPoint(Vec2::ZERO); qipan->setPosition(offset); qipan->setScale((visibleSize.height - offset.y * 2) / qipan->getContentSize().height); this->addChild(qipan); // 给棋盘添加touch监听 EventListenerTouchOneByOne *touchListener = EventListenerTouchOneByOne::create(); touchListener->onTouchBegan = CC_CALLBACK_2(GameScene::onTouchesBegan, this); touchListener->onTouchCancelled = CC_CALLBACK_2(GameScene::onTouchCancelled, this); touchListener->onTouchEnded = CC_CALLBACK_2(GameScene::onTouchEnded, this); touchListener->onTouchMoved = CC_CALLBACK_2(GameScene::onTouchMoved, this); EventDispatcher* eventDispatcher = Director::getInstance()->getEventDispatcher(); eventDispatcher->addEventListenerWithSceneGraphPriority(touchListener->clone(), qipan); for (int i = 0; i < 32; i++){ sts[i] = Stone::create(i, clickRed); sts[i]->setPosition(Vec2(rand_0_1()*visibleSize.width, rand_0_1()*visibleSize.height)); MoveTo* moveTo = MoveTo::create(0.6f, Vec2(sts[i]->getRealX(), sts[i]->getRealY())); //MoveTo* moveTo = MoveTo::create(0.6f, Vec2(stone_x + sts[i]->getX()*def, stone_y + sts[i]->getY()*def)); //sts[i]->setPosition(Vec2(stone_x + sts[i]->getX()*def, stone_y + sts[i]->getY()*def)); sts[i]->runAction(moveTo); this->addChild(sts[i]); } spriteSelected = Sprite::create("res/selected.png"); spriteSelected->setVisible(false); addChild(spriteSelected, 10); select_id = -1; //level = 1; isRedTurn = true; steps = Array::create(); steps->retain(); scheduleOnce(CC_SCHEDULE_SELECTOR(GameScene::updateAutoGo), 1.0f); return true; }
bool GameOverLayer::init() { ////////////////////////////// // 1. super init first if ( !Layer::init() ) { return false; } Size visibleSize = Director::getInstance()->getVisibleSize(); //bg auto bg = TMXTiledMap::create("map/blue_bg.tmx"); this->addChild(bg); //eff ParticleSystem *ps = ParticleSystemQuad::create("particle/light.plist"); ps->setPosition(Vec2(visibleSize.width, visibleSize.height - 200) / 2); this->addChild(ps); auto top = Sprite::createWithSpriteFrameName("gameover.top.png"); //top top->setAnchorPoint(Vec2(0,0)); top->setPosition(Vec2(0, visibleSize.height - top->getContentSize().height)); this->addChild(top); UserDefault *defaults = UserDefault::getInstance(); int highScore = defaults->getIntegerForKey(HIGHSCORE_KEY); if (highScore < score) { highScore = score; defaults->setIntegerForKey(HIGHSCORE_KEY,highScore); } __String *text = __String::createWithFormat("%i points", highScore); auto lblHighScore = Label::createWithTTF(HellcUtils::getUTF8Char("lblHighScore"), "fonts/hanyi.ttf", 25); lblHighScore->setAnchorPoint(Vec2(0,0)); lblHighScore->setPosition(Vec2(60, top->getPosition().y - 30)); addChild(lblHighScore); auto lblScore = Label::createWithTTF(text->getCString(), "fonts/hanyi.ttf", 24); lblScore->setColor(Color3B(75,255,255)); lblScore->setAnchorPoint(Vec2(0,0)); lblScore->setPosition(lblHighScore->getPosition() - Vec2(0, 40)); addChild(lblScore); auto text2 = Label::createWithTTF("Tap the Screen to Play", "fonts/hanyi.ttf", 24); text2->setAnchorPoint(Vec2(0,0)); text2->setPosition(lblScore->getPosition() - Vec2(10, 45)); addChild(text2); //touch auto listener = EventListenerTouchOneByOne::create(); listener->setSwallowTouches(true); listener->onTouchBegan = [](Touch* touch, Event* event){ Director::getInstance()->popScene(); if (UserDefault::getInstance()->getBoolForKey(SOUND_KEY)) { SimpleAudioEngine::getInstance()->playEffect(sound_1); } return false; }; //touch EventDispatcher* eventDispatcher = Director::getInstance()->getEventDispatcher(); eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); return true; }