实例介绍Cocos2d-x开关菜单-阿里云开发者社区

开发者社区> 关东升> 正文

实例介绍Cocos2d-x开关菜单

简介: <h3><span style="font-weight: normal;"><span style="font-size:14px;"><span style="color: windowtext;">开关菜单是</span><span style="color: windowtext;">MenuItemToggle</span><span style="color: windowtext
+关注继续查看

开关菜单是MenuItemToggle类实现的它是一种可以进行两种状态切换的菜单。它可以通过下面的函数创建

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课堂微信公共平台


 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器大数据实例规格族d1ne和d1特点及具体型号介绍
本文介绍阿里云服务器大数据型实例规格族d1ne和d1实例规格族的特点,具体型号,适用场景等基本参数,并列出了具体的实例规格。 大数据网络增强型实例规格族 d1ne 规格族特点 I/O优化实例 支持IPv6 仅支持SSD云盘和高效云盘 实例配备大容量、高吞吐SATA HDD本地盘,辅以最大35 Gbit/s实例间网络带宽 处理器与内存配比为1:4,为大数据场景设计 处理器:2.
1541 0
Cocos2d-x场景生命周期函数介绍
<p><span style="font-size:14px;">层(Layer)的生命周期函数有如下:</span></p> <p><span style="font-size:14px;">init()。初始化层调用。</span></p> <p><span style="font-size:14px;">onEnter()。进入层时候调用。</span></p> <p><span sty
1591 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
4519 0
使用OpenApi弹性释放和设置云服务器ECS释放
云服务器ECS的一个重要特性就是按需创建资源。您可以在业务高峰期按需弹性的自定义规则进行资源创建,在完成业务计算的时候释放资源。本篇将提供几个Tips帮助您更加容易和自动化的完成云服务器的释放和弹性设置。
7830 0
实例介绍Cocos2d-x开关菜单
<h3><span style="font-weight: normal;"><span style="font-size:14px;"><span style="color: windowtext;">开关菜单是</span><span style="color: windowtext;">MenuItemToggle</span><span style="color: windowtext
1062 0
Json.Net系列教程 1.Json.Net介绍及实例
原文 Json.Net系列教程 1.Json.Net介绍及实例 本系列教程假设读者已经对Json有一定的了解,关于Json在这里不多说.本系列教程希望能对读者开发涉及到Json的.Net项目有一定的帮 助.本系列教程是根据官方文档资料和自己项目应用汇总而成.如果觉得本系列对你有用,望多多关注.本人还只是个未毕业的学生,水平有限,尽请指正. 一.Json.Net有什么用?   Json.Net是一个读写Json效率比较高的.Net框架.Json.Net 使得在.Net环境下使用Json更加简单。
1087 0
+关注
关东升
国内著名iOS/Cocos技术作家,iOS技术顾问,Cocos最有价值专家(CVP),智捷课堂首席培训专家。担任51CTO社区iOS技术顾问。 著有多部移动开发畅销书。
317
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载