`

实例介绍Cocos2d-x开关菜单

阅读更多

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

 

[html] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. static MenuItemToggle*createWithCallback  (         
  2.          const ccMenuCallback &      callback,            //菜单操作的回调函数指针  
  3.          MenuItem *    item,                                          //进行切换的菜单项  
  4.     ...  
  5. )    

 

 

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

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

 

[html] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. auto toggleMenuItem =MenuItemToggle::createWithCallback(  
  2.                                         CC_CALLBACK_1(HelloWorld::menuItem1Callback,this),  
  3.                        MenuItemFont::create("On" ),  
  4.                        MenuItemFont::create("Off"),  
  5.                        NULL );     
  6. Menu* mn = Menu::create(toggleMenuItem,NULL);  
  7. this->addChild(mn);  

 

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

 

 

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

 

[html] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. bool HelloWorld::init()  
  2. {  
  3.    if ( !Layer::init() )  
  4.    {  
  5.        return false;  
  6.    }  
  7.      
  8.    Size visibleSize = Director::getInstance()->getVisibleSize();  
  9.    Point origin = Director::getInstance()->getVisibleOrigin();  
  10.    
  11.    Sprite *bg = Sprite::create("menu/background.png");  
  12.    bg->setPosition(Point(origin.x + visibleSize.width/2,  
  13.                              origin.y +visibleSize.height /2));  
  14.    this->addChild(bg);  
  15.    
  16.     //音效  
  17.    auto soundOnMenuItem = MenuItemImage::create(  
  18.                             "menu/on.png",  
  19.                             "menu/on.png");                                                                        ①  
  20.    auto soundOffMenuItem = MenuItemImage::create(  
  21.                             "menu/off.png",  
  22.                             "menu/off.png");                                                                        ②  
  23.      
  24.    auto soundToggleMenuItem = MenuItemToggle::createWithCallback(  
  25.                        CC_CALLBACK_1(HelloWorld::menuSoundToggleCallback,this),  
  26.                                                                             soundOnMenuItem,  
  27.                                                                             soundOffMenuItem,  
  28.                                                                             NULL);                                                            ③  
  29.    
  30.         soundToggleMenuItem->setPosition(  
  31.                                                          Director::getInstance()->convertToGL(Point(818,220)));  
  32.      
  33.    //音乐  
  34.    auto musicOnMenuItem  =MenuItemImage::create(  
  35.                             "menu/on.png",  
  36.                             "menu/on.png");                                                                        ④  
  37.         automusicOffMenuItem  =MenuItemImage::create(  
  38.                             "menu/off.png",  
  39.                             "menu/off.png");                                                                        ⑤  
  40.    auto musicToggleMenuItem = MenuItemToggle::createWithCallback(  
  41.                                  CC_CALLBACK_1(HelloWorld::menuMusicToggleCallback,this),  
  42.                                                    musicOnMenuItem,  
  43.                                                    musicOffMenuItem,  
  44.                                                    NULL );                                        ⑥  
  45.         musicToggleMenuItem->setPosition(  
  46.                                                          Director::getInstance()->convertToGL(Point(818,362)));  
  47.    
  48.     //Ok按钮  
  49.         autookMenuItem  = MenuItemImage::create(  
  50.                             "menu/ok-down.png",  
  51.                             "menu/ok-up.png");  
  52.         okMenuItem->setPosition(Director::getInstance()->convertToGL(Point(600,510)));  
  53.     
  54.    Menu* mn = Menu::create(soundToggleMenuItem,  
  55.                                                   musicToggleMenuItem,okMenuItem, NULL);                                   ⑦  
  56.    
  57.    mn->setPosition(Point::ZERO);  
  58.    this->addChild(mn);  
  59.      
  60.    return true;  
  61. }  

 

 

在上面代码第①是创建音效开的图片菜单项,第②行是创建音效关的图片菜单项,第③行代码是通过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课堂微信公共平台

分享到:
评论

相关推荐

    Cocos2d-x实战:JS卷——Cocos2d-JS开发

    资源名称:Cocos2d-x实战:JS卷——Cocos2d-JS开发内容简介:本书是介绍Cocos2d-x游戏编程和开发技术书籍,介绍了使用Cocos2d-JS中核心类、瓦片地图、物理引擎、音乐音效、数据持久化、网络通信、性能优化、多平台...

    Cocos2d-x 3.x游戏开发实战pdf含目录

    总的来说,《Cocos2d-x 3.x游戏开发实战》是一本全面覆盖Cocos2d-x 3.x开发技术的指南,它不仅教授基本概念和技术,还通过实例深入解析游戏开发的各个层面。无论你是初学者还是有一定经验的开发者,这本书都能提供...

    cocos2d-x windows vs2010配置

    本文将详细介绍如何在 Windows 环境下使用 Visual Studio 2010 配置 Cocos2d-x 游戏引擎。Cocos2d-x 是一个跨平台的游戏引擎,可以在多种平台上运行,包括 Windows、Mac OS X、iOS、Android 等。 一、下载和安装 ...

    cocos2d-x_v3.16安装及环境变量配置文档

    cocos2d-x v3.16 是该框架的一个版本号,本文档主要介绍了该版本的安装流程以及环境变量的配置方法。 首先,需要下载并安装 Python 2.7.14,因为 Cocos2d-x 的某些脚本需要用到 Python 来执行。在安装 Python 时,...

    经典版本 方便下载 源码 旧版本 3.8 官网找不到了 cocos2d-x-3.8.zip

    《cocos2d-x 3.8:经典游戏引擎源码解析》 cocos2d-x 是一个跨平台的游戏开发框架,它基于C++,同时提供了Lua和JavaScript的绑定,让开发者可以方便地在多种操作系统上创建2D游戏、演示程序和其他图形交互应用。这...

    cocos2d-x-3.1.zip

    Cocos2d-x是一个开源的游戏开发框架,广泛用于2D游戏、实时渲染应用程序和其他互动内容的制作。这个压缩包“cocos2d-x-3.1.zip”包含了Cocos2d-x框架的3.1版本,这是一个经典且相对旧的版本,可能对于那些寻找历史...

    Cocos2d-x实战:C++卷(2版)源代码

    《Cocos2d-x实战:C++卷(2版)源代码》这本书是关于使用Cocos2d-x游戏引擎进行游戏开发的专业指南。Cocos2d-x是一个开源的、跨平台的游戏开发框架,广泛应用于iOS、Android、Windows等多个操作系统。本书以C++语言...

    cocos2d-x-3.13.1 spine3.6.zip

    《Cocos2d-x 3.13.1与Spine 3.6集成详解》 Cocos2d-x是一个广泛使用的开源游戏开发框架,它基于C++,同时支持Lua和JavaScript等多种脚本语言,为开发者提供了高效、跨平台的游戏开发解决方案。在3.13.1版本中,...

    cocos2d-x API中文文档

    【cocos2d-x API中文文档】是一份详尽的资料,主要涵盖了cocos2d-x游戏引擎的API,这份文档适用于2015年的最新版本。cocos2d-x是一个基于MIT许可证的开源游戏引擎,它以快速、简单且功能强大的特性闻名,允许开发者...

    Cocos2d-x实战 JS卷 Cocos2d-JS开发

    1. **Cocos2d-x入门**:介绍Cocos2d-x的基本架构,包括场景(Scene)、层(Layer)、节点(Node)等概念,以及如何设置项目环境,创建和管理游戏资源。 2. **图形与动画**:讲解如何使用Cocos2d-x的绘图API绘制2D...

    cocos2d-x-cocos2d-x-2.2.2.zip

    这个压缩包“cocos2d-x-cocos2d-x-2.2.2.zip”包含了cocos2d-x 的2.2.2版本,该版本是cocos2d-x发展中的一个重要里程碑,它提供了许多改进和优化,使得开发者能够更加高效地创建2D游戏和应用。 在cocos2d-x 2.2.2中...

    Cocos2D-X游戏开发技术精解.pdf

    《Cocos2D-X游戏开发技术精解》详细介绍如何使用Cocos2D-X引擎开发自己的移动平台游戏。全书共15章,主要内容包括:Cocos2D-X引擎简介;如何建立跨平台的开发环境;引擎的核心模块——渲染框架;如何实现动态画面和...

    cocos2d-x 动画工具 Flash2Cocos2d-x 1.3

    《cocos2d-x 动画工具 Flash2Cocos2d-x 1.3:将Flash创意带入移动游戏开发》 在移动游戏开发领域,cocos2d-x是一款广泛使用的开源游戏引擎,以其高效、跨平台的特性深受开发者喜爱。而Flash2Cocos2d-x则是一个专为...

    Cocos2d-x实战C++卷关东升著完整版pdf

    本书以C++语言为主要编程工具,详细介绍了如何利用Cocos2d-x进行游戏开发。 首先,Cocos2d-x的基础知识是必须掌握的。Cocos2d-x基于C++,但也支持Lua和JavaScript,但本书主要关注C++的使用。C++作为一门强大的系统...

    cocos2d-x 3.0

    《cocos2d-x 3.0:游戏开发中的角色移动技术详解》 在游戏开发领域,cocos2d-x是一款广泛使用的开源2D游戏引擎,尤其在移动平台上的应用非常广泛。cocos2d-x 3.0版本带来了许多性能优化和新特性,使得开发者能够更...

    cocos引擎老版本集合(cocos2d-x-2.2.1 - 3.5).zip

    cocos引擎老版本下载集合(cocos2d-x-2.2.1 - 3.5),分别有cocos2d-x-3.5、cocos2d-x-3.4、cocos2d-x-3.2、cocos2d-x-2.2.6、cocos2d-x-2.2.2和cocos2d-x-2.2.1。

    Cocos2d-x实战++JS卷++Cocos2d-JS开发+PDF电子书下载+带书签目录+完整

    标题中提到了"Cocos2d-x实战++JS卷++Cocos2d-JS开发+PDF电子书下载+带书签目录+完整",这里面包含了几个关键知识点: 1. Cocos2d-x:是一个开源的游戏开发框架,它主要用于开发跨平台的游戏和应用程序,支持iOS、...

    cocos2d-x-2.1.4.rar

    《cocos2d-x 2.1.4:探索移动游戏开发的新篇章》 cocos2d-x 是一个跨平台的2D游戏开发框架,它为开发者提供了强大的工具和技术支持,使得游戏开发变得更为便捷。2.1.4 版本是这个框架的一个重要里程碑,它在前一...

    cocos2d-x-2.1.5

    cocos2d-x-2.1.5

    使用cocos2d-x-2.0-2.0.4开发的简单跨平台益智类魔塔小游戏

    《使用cocos2d-x-2.0-2.0.4开发的简单跨平台益智类魔塔小游戏》 cocos2d-x是一个开源的游戏开发框架,它基于C++,支持多平台,包括iOS、Android、Windows以及Mac OS等。在本项目中,开发者利用cocos2d-x 2.0.4版本...

Global site tag (gtag.js) - Google Analytics