cocos2dx中的菜单项CCMenuItem及其五个子类的使用
/*CCMenuItem是一个虚基类,因此必须实现它的五个子类之一,再把子类对象赋给父类指针,相当于多态*/
CCMenuItem *fontItem = CCMenuItemFont::create("menuItemFont", this, menu_selector(T11CCMenu::menuCallBack));
/*如果一行写不下,也可以分两行来写,使用settarget()*/
CCMenuItem *fontItem = CCMenuItemFont::create("menuItemFont");
fontItem->setTarget(fontItem, menu_selector(menuCallBack)); /*将菜单项添加进菜单,如果在create函数中初始化,则必须要以NULL结尾*/
CCMenu *menu = CCMenu::create(fontItem,NULL); /*第二个菜单项子类:CCMenuItemImage,最多有5个参数,可以设置选中前的图片,选中后图片,菜单项变灰的图片等*/
CCMenuItem *imageItem = CCMenuItemImage::create("menuitem/CloseNormal.png", "menuitem/CloseSelected.png", "menuitem/CloseDead.png");
imageItem->setTarget(this, menu_selector(T11CCMenu::menuCallBack));
//imageItem->setEnabled(false);//第三个参数,菜单项变灰时显示的图片 /*第三个菜单项子类:CCMenuItemLabel,顾名思义就是使用Label来创建的菜单项,前提是先要创建好标签*/
CCLabelBMFont *bm = CCLabelBMFont::create("bm", "fonts/bitmapFontTest.fnt");//先创建好标签
CCMenuItemLabel *labelItem = CCMenuItemLabel::create(bm, this, menu_selector(T11CCMenu::menuCallBack)); /*第四个菜单项子类:CCMenuItemSprite,即是通过精灵来创建菜单项,前提也是要先创建好精灵*/
CCSprite *normal = CCSprite::create("menuitem/gonormal.png");
CCSprite *select = CCSprite::create("menuitem/goselected.png");
CCMenuItemSprite *sprItem = CCMenuItemSprite::create(normal, select);
sprItem->setTarget(this, menu_selector(T11CCMenu::menuCallBack)); /*第五个菜单项子类:CCMenuItemToggle,可以添加任何其他子菜单项,只要是CCMenuItem及其子类即可*/
CCMenuItem * t1 = CCMenuItemFont::create("ON");
CCMenuItem * t2 = CCMenuItemFont::create("OFF");
CCMenuItem * t3 = CCMenuItemFont::create("10%");
CCMenuItem * t4 = CCMenuItemFont::create("50%");
CCMenuItem * toggle = CCMenuItemToggle::createWithTarget(this,
menu_selector(T11CCMenu::menuCallBack),
t1, t2, t3, t4,sprItem, NULL); menu = CCMenu::create();
menu->addChild(fontItem);
menu->addChild(imageItem);
menu->addChild(labelItem);
//menu->addChild(sprItem);
menu->addChild(toggle); menu->alignItemsVerticallyWithPadding();
addChild(menu);
1.CCMenu继承自CClayer,本质是一个图层,但是它与图层又有不同的地方,
2.CCMenuItem菜单项是一个虚基类,要想使用它需要实现它的五个子类中的某一个
3.菜单项的五个子类:
CCMenuItemFont
CCMenuItemImage
CCMenuItemLabel
CCMenuItemSprite
CCMenuItemToggle
4.菜单项相对于CCLabel的高级之处在于它有回调函数(menu_seletor),可以实现响应点触事件
5.CCMenu坐标系的默认原点在屏幕中心,且它的大小和屏幕一样大,如果需要设置某个菜单项的特定位置,可以先设置CCMenu的坐标原点为GL坐标系的原点,即屏幕的左下角.menu->setPosition(CCPointZero);
6.菜单项的创建:
第一种创建方式:
CCMenuItemFont *fontItem=CCMenuItemFont::create("this is a fontItem",menu_selector(T11CCMenu::menuCallBack));//一个参数是菜单项要显示的内容,第二个参数是菜单项点触事件的响应回调函数.这个回调函数是自己实现的.
第二种创建方式:
CCMenuItemFont *fontItem=CCMenuItemFont::create("this is a fontItem");
fontItem->setTarget(this,T11CCMenu::menuCallBack);//第一个参数是要响应的对象,第二个参数是要响应的回调函数,这是为了防止一行写不下,而分开的.
7.菜单的创建方式:
第一种创建方式:
CCMenu *menu=CCMenu::create(fontItem,labelItem,...NULL);//用以及存在的菜单项创建菜单,且是变参的,必须以NULL结尾
第二种创建方式:
CCMenu *menu=CCMenu::create();//创建一个空的菜单
menu->addchild(fontItem);
menu->addchild(labelItem);//然后添加菜单项,相对于子节点
8.多个子菜单项的排列方式:
a.垂直排列:menu->alignItemsVertically();
menu->alignItemsVerticallyWithPadding(50);
b.水平排列:menu->alignItemsHorizontally();
带间隔的排列:menu->alignItemsHorizontallyWithPadding(30);//每两个菜单项之间间隔30
cocos2dx中的菜单项CCMenuItem及其五个子类的使用的更多相关文章
- Cocos2d-X中创建菜单项
Cocos2d-X中创建菜单的类: CCMenuItemFont:创建纯文本的菜单项 CCMenuItemAtlasFont:创建带有艺术字体的菜单项 CCMenuItemImage:用图片创建菜单项 ...
- 如何:对 SharePoint 列表项隐藏 ECB 中的菜单项
可以通过使用功能框架向编辑控制块 (ECB) 菜单添加新的自定义操作.但是,您不能使用此方法进行相反的操作,即隐藏现有的 ECB 菜单项,因为它们是通过使用 ECMAScript(JavaScript ...
- Delphi在系统菜单中添加菜单项
unit dy219; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...
- Unity 3D中的菜单项
1.File菜单:主要是包含项目和场景的创建.保存以及输出等功能.2.Edit(编辑)菜单:只要包括对场景进行一系列的编辑以及环境设置操作等命令.3.Assets(资源)菜单:掌握资源在Unity中的 ...
- mfc 小程序---在系统菜单中添加菜单项
1建立一个对话框工程:在dlg类里定义一个菜单指针m_pMenu,在对话框OnInitDialog函数里添加代码: m_pMenu=GetSystemMenu(FALSE);//获取系统菜单的指针 m ...
- CentOS删除Applications中的菜单项
有时候会错误的安装一些软件,可能安装被不成功,但是在左上角的Applications菜单中还是会显示出来,让人很不爽. 现在介绍一个删除掉CentOS Applications中菜单项的方法: 1.安 ...
- Unity 3D编辑器扩展介绍、教程(一) —— 创建菜单项
Unity编辑器扩展教程 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 一 Brief Introduct ...
- cocos2d-x 中菜单类
菜单相关类包含:菜单类和菜单项类,菜单类图,从类图可见Menu类继承于Layer. 菜单项类图,从图中可见所有的菜单项都是从BaseMenuItem继承而来的,BaseMenuItem是抽象类,具体使 ...
- WijmoJS 以声明方式添加 Vue 菜单项
WijmoJS 以声明方式添加 Vue 菜单项 在V2019.0 Update2 的全新版本中,Vue框架下 WijmoJS 的前端UI组件功能得到再度增强. 如今,向wj菜单组件添加项的方法将不限于 ...
随机推荐
- ASP.NET验证控件应用实例与详解。
ASP.NET公有六种验证控件,分别如下: 控件名 功能描叙 1RequiredFieldValidator(必须字段验证) 用于检查是否有输入值 2CompareValidator(比 ...
- ios深拷贝,浅拷贝,拷贝自定义对象的简单介绍(转)
copy语法的目的:改变副本的时候,不会影响到源对象: 深拷贝:内容拷贝,会产生新的对象.新对象计数器置为1,源对象计数器不变. 浅拷贝:指针拷贝,不会产生新的对象.源对象计数器+1. 拷贝有下面两个 ...
- 水题2枚 Codevs1464&&Codevs1472
1472 体检 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 白银 Silver 题解 查看运行结果 题目描述 Description 郑厂长不是正厂长 也不是副厂长 ...
- CSS选择器笔记
一.元素选择符 序号 选择器 含义 1. * 通用元素选择器,匹配任何元素 2. E 标签选择器,匹配所有使用E标签的元素 3. .info class选择器,匹配所有class属性中包含info的元 ...
- js使用CSS将图片转换成黑白(灰色、置灰)
详细内容请点击 可能早就知道,像汶川这种糟糕的日子网站全灰在IE下是可以轻松实现的(filter: gray;),不过,当时,其他浏览器是无解的. 不过,时代发展,如今,CSS3的逐步推进,我们也开始 ...
- Android ViewPager
昨天看到Weather&Clock Widget的页面滑动效果不错,了解了下可能是使用ViewPager来实现的,今天研究下,顺便记录下来. 根据Android官网的介绍,ViewPage ...
- 再谈移动端Web屏幕适配
一个多月前水了一篇移动web屏幕适配方案,当时噼里啪啦的写了一通,自我感觉甚是良好.不过最近又有一些新的想法,和之前的有一些不同. 先说一下淘宝的方案,感觉现在好多的适配方案都是受了它的影响,上周六看 ...
- iOS Foundation框架 -3.利用NSNumber和NSValue将非OC对象类型数据存放到集合
1.Foundation框架中提供了很多的集合类如:NSArray,NSMutableArray,NSSet,NSMutableSet,NSDictionary,NSMutableDictionary ...
- centos6.5安装flume
这里安装flume是因为游戏业务日志搜集和分析用的 1.安装java 环境rpm -ivh jdk-8u51-linux-x64.rpm Preparing... ################## ...
- NSS_09 gridpanel中的actioncolumn事件
在设计角色权限时, 终于用到了grid的actioncolumn,如下: { header: '权限设定', xtype: 'actioncolumn', items: [{ icon: 'Conte ...