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


 

目录
相关文章
|
28天前
|
API 内存技术
用VC 6.0写flash播放器——2、为作为主窗口的对话框添加状态栏
用VC 6.0写flash播放器——2、为作为主窗口的对话框添加状态栏
|
程序员 Windows
【windows编程之对话框】对话框原理,对话框的创建
【windows编程之对话框】对话框原理,对话框的创建
Qt实现自定义图标功能
在上一节的基础上进行定义图标的功能
205 0
Qt实现自定义图标功能
QT应用编程: QGraphicsTextItem单击选中、双击进入编辑状态
QT应用编程: QGraphicsTextItem单击选中、双击进入编辑状态
635 0
QT应用编程: QGraphicsTextItem单击选中、双击进入编辑状态
|
搜索推荐
PyQt5 技巧篇-参数控制窗体右上角只显示关闭按钮实例演示
PyQt5 技巧篇-参数控制窗体右上角只显示关闭按钮实例演示
567 0
PyQt5 技巧篇-参数控制窗体右上角只显示关闭按钮实例演示
使用VC做一个简单的UI界面对话框
使用VC做一个简单的UI界面对话框
920 0
使用VC做一个简单的UI界面对话框
|
测试技术
MFC中为菜单或按钮添加快捷键功能
1、新建一快捷键资源,ACCELERATOR,关联相应的ID号,下图所示中,其中,第一个ID为自定义快捷键ID,按CTRL+R,此时响应该ID以应的消息响应函数, 第二个ID为菜单ID,此时按CTRL+V,调出ID_NETWORK_PING菜单对应的响应函数。
1365 0
|
图形学
Unity3D初识---窗口和菜单基础介绍
目录 目录 窗口界面介绍: scene: Game : Hierarchy: Project: Inspector: 其他窗口: 菜单界面 File文件菜单 Edit编辑菜单 窗口界面介绍: scene: 在场景编译窗口中可以鼠标右键选中之后移动鼠标就可以自由的浏览场景,并选择物体对其可以进行操作,按下Q\W\E\R四个键时可以画面中的将会进行变换,第一个图标可以进行拖动、第二个图标可以对物体进行位移,第三个图标可以对物体进行旋转,第四个图标可以对物体进行放大缩小。
1288 0
|
Android开发 Windows
GEF入门实例_总结_03_显示菜单和工具栏
一、前言 本文承接上一节: GEF入门实例_总结_02_新建初始RCP空项目 这一节,我们来给我们的插件加上菜单。   二、基础知识 1.action bar、menubar、coolbar   含义 action bar 操作条 action 动作。
1240 0