展会信息港展会大全

Cocos2d-x 3.2 大富翁游戏项目开发-第三部分 菜单场景,cocos2d-x项目开发
来源:互联网   发布日期:2015-09-28 15:07:28   浏览:2068次  

导读: Cocos2d-x 3.2 大富翁游戏项目开发-第三部分 菜单场景,cocos2d-x项目开发 上一部分介绍到片头动画介绍后进入到菜单场景,场景效果如图 MenuScene.h头文件...

Cocos2d-x 3.2 大富翁游戏项目开发-第三部分 菜单场景,cocos2d-x项目开发

上一部分介绍到片头动画介绍后进入到菜单场景,场景效果如图

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

MenuScene.cpp部分代码如下:

bool MenuScene::init()

{

if ( !LayerColor::initWithColor(Color4B(255, 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,FONT_MENU,Btn_FontSize);

}else

{

settingsGameTTF = LabelTTF::create(MUSIC_OFF,FONT_MENU,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);

………………………

}

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;

}

代码比较简单

未完待续...............

http://www.bkjia.com/Androidjc/927809.htmlwww.bkjia.comtruehttp://www.bkjia.com/Androidjc/927809.htmlTechArticleCocos2d-x 3.2 大富翁游戏项目开发-第三部分 菜单场景,cocos2d-x项目开发 上一部分介绍到片头动画介绍后进入到菜单场景,场景效果如图 Men...

赞助本站

人工智能实验室

相关热词: android开发 应用开发

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港