ParallaxNode * ParallaxNode::create() { ParallaxNode *ret = new ParallaxNode(); ret->autorelease(); return ret; }
ParallaxNode * ParallaxNode::create() { ParallaxNode *ret = new (std::nothrow) ParallaxNode(); ret->autorelease(); return ret; }
bool GameScene::init() { if ( !LayerColor::initWithColor(Color4B(0,250,250,255)) ) { return false; } pause = false; //ÔÝÍ£±êʶΪ¼Ù /************************************************************************/ /* ½«Í¼²ã´æÈëÓÎÏ·¹ÜÀíÆ÷ÖÐ */ /************************************************************************/ //ÓÑÃËͳ¼Æ-¼Ç¼½øÈë¹Ø¿¨ char levelStr[5]; sprintf(levelStr, "level_%d_", level); #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) umeng::MobClickCpp::startLevel(levelStr); #endif staticLayer = this; //ÓÎÏ·¾²Ì¬²ã GameManager::getInstance()->staticLayer = staticLayer; gameLayer = Layer::create(); //ÓÎÏ·Ö÷²ã GameManager::getInstance()->gameLayer = gameLayer; staticLayer->addChild(gameLayer); ParallaxNode* praNode = ParallaxNode::create(); bkLayer = Layer::create(); //±³¾°²ã-ÊÓ²î²ã GameManager::getInstance()->bkLayer = bkLayer; gameLayer->addChild(praNode, -2); //Ó¦¸ÃСÓÚ¼ÓÔصØͼ²ã praNode->addChild(bkLayer, 1, Vec2(CD_FLOAT("bk_ratio_x"), CD_FLOAT("bk_ratio_y")), Vec2(0, 0)); thingLayer = Layer::create(); //ÊÂÎï²ã GameManager::getInstance()->thingLayer = thingLayer; gameLayer->addChild(thingLayer); monsterLayer = Layer::create(); //¹ÖÎï²ã GameManager::getInstance()->monsterLayer = monsterLayer; gameLayer->addChild(monsterLayer); heroLayer = Layer::create(); //Ó¢ÐÛ²ã GameManager::getInstance()->heroLayer = heroLayer; gameLayer->addChild(heroLayer, 100); weaponLayer = Layer::create(); //ÌØЧ²ã GameManager::getInstance()->weaponLayer = weaponLayer; gameLayer->addChild(weaponLayer); hudLayer = HudLayer::create(); //HUD²ã----------todo GameManager::getInstance()->hudLayer = hudLayer; staticLayer->addChild(hudLayer); settingLayer = Layer::create(); //ÉèÖòã GameManager::getInstance()->settingLayer = settingLayer; staticLayer->addChild(settingLayer); //////////////////ÉèÖòã³õʼ»¯//////////////////////////// //ĬÈϲ»´ò¿ªÉèÖòã settingLayer->setVisible(false); //±³¾° Sprite* settingBk = Sprite::create("UI/GAME/bk.png"); settingBk->setAnchorPoint(Vec2(0, 0)); settingBk->setPosition(0, 0); settingLayer->addChild(settingBk); //Pause Sprite* pauseLogo = Sprite::create("UI/GAME/pause.png"); pauseLogo->setPosition(CD_FLOAT("setting_pause_x"), CD_FLOAT("setting_pause_y")); settingLayer->addChild(pauseLogo); //²Ëµ¥ Menu* settingMenu = Menu::create(); settingMenu->setAnchorPoint(Vec2(0, 0)); settingMenu->setPosition(0, 0); settingLayer->addChild(settingMenu); //·µ»Ø°´Å¥ MenuItemImage* backButton = MenuItemImage::create("UI/GAME/up_back.png", "UI/GAME/down_back.png", "UI/GAME/down_back.png", CC_CALLBACK_1(GameScene::backButton, this)); backButton->setPosition(CD_FLOAT("setting_back_x"), CD_FLOAT("setting_back_y")); settingMenu->addChild(backButton); MenuItemImage* homeButton = MenuItemImage::create("UI/GAME/up_home.png", "UI/GAME/down_home.png", "UI/GAME/down_home.png", CC_CALLBACK_1(GameScene::homeButton, this)); homeButton->setPosition(CD_FLOAT("setting_home_x"), CD_FLOAT("setting_home_y")); settingMenu->addChild(homeButton); MenuItemImage* breakButton = MenuItemImage::create("UI/GAME/up_break.png", "UI/GAME/down_break.png", "UI/GAME/down_break.png", CC_CALLBACK_1(GameScene::breakButton, this)); breakButton->setPosition(CD_FLOAT("setting_break_x"), CD_FLOAT("setting_break_y")); settingMenu->addChild(breakButton); //////////////////³õʼ»¯µØͼ///////////////////////////// // MapAnalysis* mapAnalysis = MapAnalysis::getInstance(); mapAnalysis->initMap(level); //´Ë´¦ôÛºÏÑÏÖØ hero = GameManager::getInstance()->hero; ///////////////////////////ʼþ¼àÌý////////////////////////////// //ÉêÇë¼üÅ̼àÌý EventListenerKeyboard* event = EventListenerKeyboard::create(); event->onKeyPressed = [=](EventKeyboard::KeyCode code, Event* event){ if(code == EventKeyboard::KeyCode::KEY_K) { hero->jump(); } else if(code == EventKeyboard::KeyCode::KEY_A) { hero->moveLeft(); } else if(code == EventKeyboard::KeyCode::KEY_D) { hero->moveRight(); } else if(code == EventKeyboard::KeyCode::KEY_J) { hero->fire(); } }; event->onKeyReleased = [=](EventKeyboard::KeyCode code, Event* event){ if(code == EventKeyboard::KeyCode::KEY_A && hero->getMoveState() == MOVE_LEFT) { hero->moveStop(); } else if(code == EventKeyboard::KeyCode::KEY_D && hero->getMoveState() == MOVE_RIGHT) { hero->moveStop(); } }; //°´¼ü¾«Áé Sprite* but_left = Sprite::create("HUD/button_up_left.png"); but_left->setAnchorPoint(Vec2(0, 0)); but_left->setPosition(CD_FLOAT("hud_but_left_x"), CD_FLOAT("hud_but_left_y")); hudLayer->addChild(but_left); Sprite* but_right = Sprite::create("HUD/button_up_right.png"); but_right->setAnchorPoint(Vec2(0, 0)); but_right->setPosition(CD_FLOAT("hud_but_right_x"), CD_FLOAT("hud_but_right_y")); hudLayer->addChild(but_right); Sprite* but_A = Sprite::create("HUD/button_up_A.png"); but_A->setAnchorPoint(Vec2(0, 0)); but_A->setPosition(CD_FLOAT("hud_but_A_x"), CD_FLOAT("hud_but_A_y")); hudLayer->addChild(but_A); Sprite* but_B = Sprite::create("HUD/button_up_B.png"); but_B->setAnchorPoint(Vec2(0, 0)); but_B->setPosition(CD_FLOAT("hud_but_B_x"), CD_FLOAT("hud_but_B_y")); hudLayer->addChild(but_B); //hud²Ëµ¥ Menu* hudMenu = Menu::create(); hudMenu->setAnchorPoint(Vec2(0, 0)); hudMenu->setPosition(0, 0); hudLayer->addChild(hudMenu); //ÔÝÍ£°´Å¥ MenuItemImage* pauseButton = MenuItemImage::create("UI/GAME/pause_button.png", "UI/GAME/pause_button.png", "UI/GAME/pause_button.png", CC_CALLBACK_1(GameScene::pauseButton, this)); pauseButton->setPosition(CD_FLOAT("hud_pause_bt_x"), 640-CD_FLOAT("hud_pause_bt_y")); hudMenu->addChild(pauseButton); //°´¼ü°üΧºÐ Rect rect_but_left = but_left->getBoundingBox(); Rect rect_but_right = but_right->getBoundingBox(); Rect rect_but_A = but_A->getBoundingBox(); Rect rect_but_B = but_B->getBoundingBox(); //ÉêÇë´¥Ãþ¼àÌý EventListenerTouchAllAtOnce* touchEvent = EventListenerTouchAllAtOnce::create(); //´¥Ãþ°´Ï touchEvent->onTouchesBegan = [=](const std::vector<Touch*>& touches, Event* event){ for (auto &item : touches) //±éÀúÈÝÆ÷Öеĸ÷¸ö³ÉÔ± { auto touch = item; auto location = touch->getLocation(); //LEFT if (rect_but_left.containsPoint(location)) { hero->moveLeft(); } //RIGHT else if (rect_but_right.containsPoint(location)) { hero->moveRight(); } //A else if (rect_but_A.containsPoint(location)) { hero->fire(); } //B else if (rect_but_B.containsPoint(location)) { hero->jump(); } } }; //´¥Ãþʱ touchEvent->onTouchesMoved = [=](const std::vector<Touch*>& touches, Event* event){ bool left = false; bool right = false; for (auto &item : touches) //±éÀúÈÝÆ÷Öеĸ÷¸ö³ÉÔ± { auto touch = item; auto location = touch->getLocation(); if (rect_but_left.containsPoint(location)) { left = true; hero->moveLeft(); } else if (rect_but_right.containsPoint(location)) { right = true; hero->moveRight(); } } setLeft(left); setRight(right); if (!left && !right) { hero->moveStop(); } }; //´¥Ãþ̧Æð touchEvent->onTouchesEnded = [=](const std::vector<Touch*>& touches, Event* event){ bool left = isLeft(); bool right = isRight(); for (auto &item : touches) //±éÀúÈÝÆ÷Öеĸ÷¸ö³ÉÔ± { auto touch = item; auto location = touch->getLocation(); if (rect_but_left.containsPoint(location)) { left = false; } else if (rect_but_right.containsPoint(location)) { right = false; } } setLeft(left); setRight(right); if (!left && !right) { hero->moveStop(); } }; //°ó¶¨Ê¼þ Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(event, this); Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(touchEvent, this); scheduleUpdate();