大佬教程收集整理的这篇文章主要介绍了Cocos2d-x 3.2 大富翁游戏项目开发-第三部分 菜单场景,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
上一部分介绍到片头动画介绍后进入到菜单场景,场景效果如图
@H_68_13@menuScene.h头文件如下:
class MenuScene : public LayerColor { public: static Scene* createScene(); virtual bool init(); CREATE_FUNC(MenuScenE); private: Size visibleSize; //窗口尺寸 LabelTTF* setTingsGameTTF; //场景文字 void menuTouchDown (Object* pSender,Control::EventType event);// Menu点击回调方法 void addBACkgroundSprite(); //添加场景背景方法 void addMenuSprites();//添加Menu方法 }; #endif
@H_834_26@menuScene.cpp部分代码如下:
bool MenuScene::init() { if ( !LayerColor::initWithColor(Color4B(255,255,255)) ) { return false; } visibleSize = Director::geTinstance()->getVisibleSize(); Vec2 origin = Director::geTinstance()->getVisibLeorigin(); addBACkgroundSprite();//添加场景背景方法 addMenuSprites(); //添加Menu方法 return true; }
void MenuScene::addBACkgroundSprite() { //添加大富翁背景图片,居中显示 Sprite* menuSpriteLogo= Sprite::create(MENU_LOGO); menuSpriteLogo->setPosition(ccp(visibleSize.width/2,visibleSize.height)); menuSpriteLogo->setAnchorPoint(ccp(0.5,1)); menuSpriteLogo->setScale(0.6f); addChild(menuSpriteLogo); //添加左边彩虹图片 Sprite* rainBowSprite= Sprite::create(RAINBOW); rainBowSprite->setPosition(ccp(5,visibleSize.height-20)); rainBowSprite->setAnchorPoint(ccp(0,1)); rainBowSprite->setScale(0.3f); addChild(rainBowSpritE); //让彩虹图片左右移动 MoveBy* rainBowMove = MoveBy::create(1,ccp(8,0)); MoveBy* rainBowMoveReverse = rainBowMove->reverse(); Sequence* rainBowAction = Sequence::create(rainBowMove,rainBowMoveReverse,null); rainBowSprite->runAction(RepeatForever::create(rainBowAction)); }
void MenuScene:: addMenuSprites() { //添加单机游戏Menu Scale9Sprite* btnNormal = Scale9Sprite::create(NORMAL_MENU); //设置菜单normal图片 Scale9Sprite* btnPress = Scale9Sprite::create(PRESS_MENU);// 设置菜单press图片 LabelTTF* singleGameTTF = LabelTTF::create(SINGLE_GAME,FONT_MENU,Btn_FontSizE);//创建菜单所需的Label对象 ControlButton* singleGameBtn = ControlButton::create(singleGameTTF,btnNormal);//创建controlButton singleGameBtn->setBACkgroundSpriteForState(btnPress,Control::State::SELECTED);//添加singleButton菜单的press效果图片 singleGameBtn->setPosition(ccp(visibleSize.width/2,visibleSize.height-200));//设置位置 singleGameBtn->setPreferredSize(Size(Btn_Width,Btn_Height));//设置大小 singleGameBtn->addTargetWithActionForControlEvents(this,cccontrol_SELEctor(MenuScene::menuTouchDown),Control::EventType::TOUCH_DOWN);//设置点击回调方法 singleGameBtn->setTag(Btn_Single_Game_TAG);//设置Tag addChild(singleGameBtn);//添加menu //其他menu添加方法,同上类似,不再重复. ……………………….. //setTings菜单不大一样,该菜单点击都有打开或关闭音效。 Scale9Sprite* btnNormal3 = Scale9Sprite::create(NORMAL_MENU); Scale9Sprite* btnPress3 = Scale9Sprite::create(PRESS_MENU); bool music_on = UserDefault::geTinstance()->getBoolForKey(MUSIC_ON_KEY,truE);//获取音效设置 LabelTTF* setTingsGameTTF; //如果音效开,则menu显示on,如果关,显示off if(music_on) { setTingsGameTTF = LabelTTF::create(MUSIC_ON,Btn_FontSizE); }else { setTingsGameTTF = LabelTTF::create(MUSIC_OFF,Btn_FontSizE); } ControlButton* setTingsGameBtn = ControlButton::create(setTingsGameTTF,btnNormal3); setTingsGameBtn->setBACkgroundSpriteForState(btnPress3,Control::State::SELECTED); setTingsGameBtn->setPosition(ccp(visibleSize.width/2,visibleSize.height-320)); setTingsGameBtn->setPreferredSize(Size(Btn_Width,Btn_Height)); setTingsGameBtn->addTargetWithActionForControlEvents(this,cccontrol_SELEctor(MenuScene:: menuTouchDown),Control::EventType::TOUCH_DOWN);//添加setTing回调 setTingsGameBtn->setTag(Btn_Music_TAG); addChild(setTingsGameBtn); ……………………… }
void MenuScene:: menuTouchDown(Object* pSender,Control::EventType event) { log("single touched"); ControlButton* button = (ControlButton*)pSender; int tag = button->getTag(); switch(tag) { case Btn_Single_Game_TAG: { log("single game"); //Director::geTinstance()->pushScene(MapChooseScene::createScene()); } case Btn_Multi_Game_TAG: { log("multi game"); break; } case Btn_Music_TAG: { bool music_on = UserDefault::geTinstance()->getBoolForKey(MUSIC_ON_KEY,truE); if(music_on) { UserDefault::geTinstance()->setBoolForKey(MUSIC_ON_KEY,falsE);//设置音效关 button->settitleForState(MUSIC_OFF,Control::State::NORMAL);//让menu文字显示off }else { UserDefault::geTinstance()->setBoolForKey(MUSIC_ON_KEY,truE);//设置音效开 button->settitleForState(MUSIC_ON,Control::State::NORMAL);// 让menu文字显示on } break; } case Btn_Quit_Game_TAG: { log("quit game"); //popupLayer();弹出退出对话框,代码较多,后续编写 break; } default: break; }
未完待续...............
以上是大佬教程为你收集整理的Cocos2d-x 3.2 大富翁游戏项目开发-第三部分 菜单场景全部内容,希望文章能够帮你解决Cocos2d-x 3.2 大富翁游戏项目开发-第三部分 菜单场景所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。