Cocos2d-x   发布时间:2022-05-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了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);
                ………………………
}


@H_602_0@menu点击的回调方法,根据点击对象tag调用相应方法,此处主要的是case语句需要添加 { } 括号,否则编译报错


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,请注明来意。