实例介绍Cocos2d-x开关菜单
开关菜单是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对象。
实例介绍Cocos2d-x开关菜单的更多相关文章
- 实例介绍Cocos2d-x精灵菜单和图片菜单
精灵菜单类是MenuItemSprite,图片菜单类是MenuItemImage.由于MenuItemImage继承于MenuItemSprite,所以图片菜单也属于精灵菜单.为什么叫精灵菜单呢?那是 ...
- 【转】Android实例剖析笔记(二)--用实例讲解Andriod的开发过程,以NotesList为实例介绍Android的菜单机制
原文网址:http://kb.cnblogs.com/page/78304/ 简介 android提供了三种菜单类型,分别为options menu,context menu,sub menu. op ...
- Cocos2d-x开发实例介绍帧动画使用
下面我们通过一个实例介绍一下帧动画的使用,这个实例如下图所示,点击Go按钮开始播放动画,这时候播放按钮标题变为Stop,点击Stop按钮可以停止播放动画. 下面我们再看看具体的程序代码,首先看一下看H ...
- Cocos2d-x开发实例介绍特效演示
下面我们通过一个实例介绍几个特效的使用,这个实例下图所示,下图是一个操作菜单场景,选择菜单可以进入到下图动作场景,在下图动作场景中点击Go按钮可以执行我们选择的特性动作,点击Back按钮可以返回到菜单 ...
- Cocos2d-x中__Dictionary容器以及实例介绍
__Dictionary类在Cocos2d-x 2.x时代它就是CCDictionary类,它是模仿Objective-C中的NSDictionary类而设计的,通过引用计数管理内存.__Dictio ...
- Cocos2d-x中__Array容器以及实例介绍
__Array类在Cocos2d-x 2.x时代它就是CCArray类.它是模仿Objective-C中的NSArray类而设计的,通过引用计数管理内存.__Array继承于Ref类,因此它所能容纳的 ...
- 实例介绍Cocos2d-x中Box2D物理引擎:HelloBox2D
我们通过一个实例介绍一下,在Cocos2d-x 3.x中使用Box2D物理引擎的开发过程,熟悉这些API的使用.这个实例运行后的场景如图所示,当场景启动后,玩家可以触摸点击屏幕,每次触摸时候,就会在触 ...
- 实例介绍Cocos2d-x物理引擎:碰撞检测
碰撞检测是使用物理引擎的一个重要目的,使用物理引擎可以进行精确的碰撞检测,而且执行的效率也很高.在Cocos2d-x 3.x中使用事件派发机制管理碰撞事件,EventListenerPhysicsCo ...
- 实例介绍Cocos2d-x物理引擎:HelloPhysicsWorld
我们通过一个实例介绍一下,在Cocos2d-x 3.x中使用物理引擎的开发过程,熟悉这些API的使用.这个实例的运行后的场景,当场景启动后,玩家可以触摸点击屏幕,每次触摸时候,就会在触摸点生成一个新的 ...
随机推荐
- ztree使用心得
一个很好用的Jquery树形控件 官网:http://www.ztree.me/v3/main.php#_zTreeInfo 我主要引用的文件为: //最新版的JS压缩包 <script src ...
- Apache的Order Allow Deny心得
Allow和Deny可以用于apache的conf文件或者.htaccess文件中(配合Directory, Location, Files等),用来控制目录和文件的访问授权. 所以,最常用的是: O ...
- ASP.NET过滤HTML标签只保留换行与空格的方法
这篇文章主要介绍了ASP.NET过滤HTML标签只保留换行与空格的方法,包含网上常见的方法以及对此方法的改进,具有一定的参考借鉴价值,需要的朋友可以参考下 本文实例讲述了ASP.NET过滤HTML ...
- 识货的拿走:Android游戏框架解读之总体结构
Android游戏开发的框架图无偿奉上.
- 数据挖掘算法-Apriori Algorithm(关联规则)
http://www.cnblogs.com/jingwhale/p/4618351.html Apriori algorithm是关联规则里一项基本算法.是由Rakesh Agrawal和Ramak ...
- reactor官方文档译文(1)Reactor简介
原文地址:http://projectreactor.io/docs/reference/ Reactor简介 Reactor是一个基础库,用在构建实时数据流应用.要求有容错和低延迟至毫秒.纳秒.皮秒 ...
- org.apache.hadoop.conf-Configured
org.apache.hadoop.conf中的最后一个类,也是这个包中以后用的最频繁的一个,Configurable算是肉体,Configuration算是灵魂吧 package org.apach ...
- FileSystemWatcher触发多次Change事件的解决办法 .
最近要用到FileSystemWatcher来监控某个目录中的文件是否发生改变,如果改变就执行相应的操作.但在开发过程中,发现FileSystemWatcher在文件创建或修改后,会触发多个Creat ...
- spring mvc 的各种参数的绑定方式
本文转自http://www.cnblogs.com/HD/p/4107674.html SpringMVC的各种参数绑定方式 1. 基本数据类型(以int为例,其他类似):Controller代码: ...
- 1.5.3 什么是Tokenizer-分词
什么是Tokenizer-分词 分词器的工作就是分解文本流成词(tokens).在这个文本中,每一个token都是这些字符的一个子序列.一个分析器(analyzer)必须知道它所配置的字段,但是tok ...