zl程序教程

您现在的位置是:首页 >  后端

当前栏目

实例介绍Cocos2d-x开关菜单

实例 介绍 菜单 cocos2d 开关
2023-09-14 08:59:50 时间
static MenuItemToggle*createWithCallback ( 

 const ccMenuCallback callback, //菜单操作的回调函数指针

 MenuItem * item, //进行切换的菜单项

) 

从第二个参数开始都是MenuItem类的实例对象它们是开关菜单显示的菜单项它们可以是文本、图片和精灵类型的菜单项但是最后不用忘记NULL结尾。

下面代码是简单形式的文本类型的开关菜单

auto toggleMenuItem =MenuItemToggle::createWithCallback(

 CC_CALLBACK_1(HelloWorld::menuItem1Callback,this),

 MenuItemFont::create("On" ),

 MenuItemFont::create("Off"),

 NULL ); 

Menu* mn = Menu::create(toggleMenuItem,NULL);

this- addChild(mn);

下面我们通过一个实例介绍一下其它的复杂类型的开关菜单的使用这个实例如下图所示是一个游戏音效和背景音乐设置界面我们可以通过开关菜单实现这个功能我们的美术设计师为每一个设置项目音效和背景音乐分别准备了两个图片。

 

下面我们看看实例代码的实现HelloWorldScene.cpp中使用MenuItemSprite菜单项的代码如下

bool HelloWorld::init()

 if ( !Layer::init() )

 return false;

 Size visibleSize = Director::getInstance()- getVisibleSize();

 Point origin = Director::getInstance()- getVisibleOrigin();

 Sprite *bg = Sprite::create("menu/background.png");

 bg- setPosition(Point(origin.x + visibleSize.width/2,

 origin.y +visibleSize.height /2));

 this- addChild(bg);

 //音效

 auto soundOnMenuItem = MenuItemImage::create(

 "menu/on.png",

 "menu/on.png"); ①

 auto soundOffMenuItem = MenuItemImage::create(

 "menu/off.png",

 "menu/off.png"); ②

 auto soundToggleMenuItem = MenuItemToggle::createWithCallback(

 CC_CALLBACK_1(HelloWorld::menuSoundToggleCallback,this),

 soundOnMenuItem,

 soundOffMenuItem,

 NULL); ③

 soundToggleMenuItem- setPosition(

 Director::getInstance()- convertToGL(Point(818,220)));

 //音乐

 auto musicOnMenuItem =MenuItemImage::create(

 "menu/on.png",

 "menu/on.png"); ④

 automusicOffMenuItem =MenuItemImage::create(

 "menu/off.png",

 "menu/off.png"); ⑤

 auto musicToggleMenuItem = MenuItemToggle::createWithCallback(

 CC_CALLBACK_1(HelloWorld::menuMusicToggleCallback,this),

 musicOnMenuItem,

 musicOffMenuItem,

 NULL ); ⑥

 musicToggleMenuItem- setPosition(

 Director::getInstance()- convertToGL(Point(818,362)));

 //Ok按钮

 autookMenuItem = MenuItemImage::create(

 "menu/ok-down.png",

 "menu/ok-up.png");

 okMenuItem- setPosition(Director::getInstance()- convertToGL(Point(600,510)));

 Menu* mn = Menu::create(soundToggleMenuItem,

 musicToggleMenuItem,okMenuItem, NULL); ⑦

 mn- setPosition(Point::ZERO);

 this- addChild(mn);

 return true;

}

在上面代码第①是创建音效开的图片菜单项第②行是创建音效关的图片菜单项第③行代码是通过createWithCallback函数创建开关菜单项MenuItemToggle。类似的第④~⑥创建了背景音乐开关菜单项。第⑦行代码是通过上面创建的开关菜单项创建Menu对象。


更多内容请关注最新Cocos图书《Cocos2d-x实战 C++卷》 本书交流讨论网站http://www.cocoagame.net
更多精彩视频课程请关注智捷课堂Cocos课程http://v.51work6.com
欢迎加入Cocos2d-x技术讨论群257760386


《Cocos2d-x实战 C++卷》现已上线各大商店均已开售

京东http://item.jd.com/11584534.html

亚马逊http://www.amazon.cn/Cocos2d-x%E5%AE%9E%E6%88%98-C-%E5%8D%B7-%E5%85%B3%E4%B8%9C%E5%8D%87/dp/B00PTYWTLU

当当http://product.dangdang.com/23606265.html

互动出版网http://product.china-pub.com/3770734

《Cocos2d-x实战 C++卷》源码及样章下载地址

源码下载地址http://51work6.com/forum.php?mod=viewthread tid=1155 extra=page%3D1 

样章下载地址http://51work6.com/forum.php?mod=viewthread tid=1157 extra=page%3D1

欢迎关注智捷iOS课堂微信公共平台

 


在场景编译窗口中可以鼠标右键选中之后移动鼠标就可以自由的浏览场景,并选择物体对其可以进行操作,按下Q\W\E\R四个键时可以画面中的将会进行变换,第一个图标可以进行拖动、第二个图标可以对物体进行位移,第三个图标可以对物体进行旋转,第四个图标可以对物体进行放大缩小。
关东升 国内著名iOS/Cocos技术作家,iOS技术顾问,Cocos最有价值专家(CVP),智捷课堂首席培训专家。担任51CTO社区iOS技术顾问。 著有多部移动开发畅销书。