Cocos2d-JS中的文本菜单
文本菜单是菜单项只能显示文本,文本菜单类包括了cc.MenuItemLabel、cc.MenuItemFont和cc.MenuItemAtlasFont。cc.MenuItemLabel是个抽象类,具体使用的时候是使用cc.MenuItemFont和cc.MenuItemAtlasFont两个类。
文本菜单类cc.MenuItemFont,它的其中一个构造函数定义如下:
- ctor(value, //要显示的文本
 - callback, //菜单操作的回调函数指针
 - target)
 
文本菜单类cc.MenuItemAtlasFont是基于图片集的文本菜单项,它的其中一个构造函数定义如下:
- ctor (value, //要显示的文本
 - charMapFile, //图片集文件
 - itemWidth, //要截取的文字在图片中的宽度
 - itemHeight, //要截取的文字在图片中的高度
 - startCharMap //开始字符
 - callback ) //菜单操作的回调函数指针
 
本节我们会通过一个实例介绍一下文本菜单的使用,这个实例如图4-12所示,其中菜单Start是使用cc.MenuItemFont实现的,菜单Help是使用cc.MenuItemAtlasFont实现的。
下面我们看看app.js 中HelloWorldLayer中初始化代码如下:
- var HelloWorldLayer = cc.Layer.extend({
 - ctor:function () {
 - this._super();
 - var size = cc.director.getWinSize();
 - var bg = new cc.Sprite(res.background_png);
 - bg.x = size.width/2;
 - bg.y = size.height/2;
 - this.addChild(bg);
 - cc.MenuItemFont.setFontName("Times New Roman"); ①
 - cc.MenuItemFont.setFontSize(86); ②
 - var item1 = new cc.MenuItemFont("Start", this.menuItem1Callback, this); ③
 - var item2 = new cc.MenuItemAtlasFont("Help",
 - res.charmap_png,
 - 48, 65,' ',
 - this.menuItem2Callback, this); ④
 - var mn = new cc.Menu(item1, item2); ⑤
 - mn.alignItemsVertically(); ⑥
 - this.addChild(mn); ⑦
 - return true;
 - },
 - menuItem1Callback:function (sender) {
 - cc.log("Touch Start Menu Item " + sender);
 - },
 - menuItem2Callback:function (sender) {
 - cc.log("Touch Help Menu Item " + sender);
 - }
 - });
 
上述代码第①和②行是设置文本菜单的文本字体和字体大小。第③行代码是创建cc.MenuItemFont菜单项对象,它是一个一般文本菜单项,构造函数的第一个参数是菜单项的文本内容,第二个参数是点击菜单项回调的函数指,this.menuItem1Callback是函数指针,this代表函数所在的对象。
第④行代码是创建一个cc.MenuItemAtlasFont菜单项对象,这种菜单项是基于图片集的菜单项。res.charmap_png变量也是在resource.js文件中定义的,表示"res/menu/tuffy_bold_italic-charmap.png"路径。
还有第⑤行代码var  mn = new cc.Menu(item1, item2)是创建菜单对象,把之前创建的菜单项添加到菜单中。第⑥行代码mn.alignItemsVertically()是设置菜单项垂直对齐。第⑦行代码是this.addChild(mn)是把菜单对象添加到当前层中。
注意  上述代码第④行cc.MenuItemAtlasFont类在Web平台下运行正常作用,但是在JSB本地运行显示有误,我们可以使用下面代码替换。
- var labelAtlas = new cc.LabelAtlas("Help", res.charmap_png, 48, 65, ' ');
 - var item2 = new cc.MenuItemLabel(labelAtlas, this.menuItem2Callback, this );
 
本书交流讨论网站:http://www.cocoagame.net
更多精彩视频课程请关注智捷课堂Cocos课程:http://v.51work6.com
《Cocos2d-x实战 JS卷》现已上线,各大商店均已开售:
京东:http://item.jd.com/11659698.html
欢迎关注智捷iOS课堂微信公共平台,了解最新技术文章、图书、教程信息
Cocos2d-JS中的文本菜单的更多相关文章
- js中input文本框设置和移除默认值
		
这里想实现的效果是:设置和移除文本框默认值,如下图鼠标放到文本框中的时候,灰字消失. 1.可以用简单的方式,就是给input文本框加上onfocus属性,如下代码: <input id=&quo ...
 - js中的文本编辑器控件KindEditor---那些打酱油的日子
		
使用文本编辑器控件KindEditor渲染文本域页面显示 this.sync()同步KindEditor的值到textarea文本框 editor.isEmpty()判断文本域是否是空 editer. ...
 - js中的文本编辑器控件KindEditor
		
使用文本编辑器控件KindEditor渲染文本域页面显示 this.sync()同步KindEditor的值到textarea文本框 editor.isEmpty()判断文本域是否是空 editer. ...
 - cocos2d JS 中的数组拼接与排序
		
var arrA = [];//创建三个局部变量的新数组 var arrB = []; var arrC = []; var newCards = this.MyMahjong;//创建一个新的局部变 ...
 - js中——限制文本框输入非数字
		
//先把非数字的都替换掉,除了数字和.和/ obj.value = obj.value.replace(/[^\-\d./]/g, ""); //必须保 ...
 - js中的计时器
		
在JS中做二级菜单时,被一个鼠标移出时隐藏的小问题困扰了很久. <script> function Menu(id){ var _this=this; this.obj=document. ...
 - cocos2d js ClippingNode  制作标题闪亮特效
		
1.效果图: 之前在<Android 高仿 IOS7 IPhone 解锁 Slide To Unlock>中制作了文字上闪亮移动的效果,这次我们来看下怎样在cocos2d js 中做出类似 ...
 - (三)在js(jquery)中获得文本框焦点和失去焦点的方法
		
在js(jquery)中获得文本框焦点和失去焦点的方法 文章介绍两个方法和种是利用javascript onFocus onBlur来判断焦点和失去焦点,加一种是利用jquery $(" ...
 - JS修改标签中的文本且不影响其中标签
		
/********************************************************************* * JS修改标签中的文本且不影响其中标签 * 说明: * ...
 
随机推荐
- HDU 1695 GCD 容斥
			
GCD 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=1695 Description Given 5 integers: a, b, c, d, k ...
 - C# 6与VB 12即将加入模式匹配
			
又有一种源自于函数式编程语言中的概念加入了C#和VB的阵营,这就是被称为模式匹配(Pattern Matching)的特性.初看上去,模式匹配的作用类似于一段switch/select语句块,但它的功 ...
 - Shadow Mapping 的原理与实践(二)
			
3) 定义并生成Shadow Map纹理 texture2D Lamp0ShadowMapColor : RENDERCOLORTARGET < float2 ViewPortRatio = { ...
 - Android创建桌面快捷方式
			
在桌面上创建特定界面的快捷入口,icon和title根据请求参数命名.在网上收集的一些相关资 料,在使用intent发送广播的时候,一些型号的收集会有问题,如魅族MX,红米,以及华为,使用setCla ...
 - 好记心不如烂笔头之JQuery学习,第二章
			
jQuery获取元素不需要担心元素不存在而报错,但是无论怎样 $("#xxx") 是一定会有返回值的,无论存不存在元素,那么依然是要对元素做判断的,判断的方法常见两种 1.看返回的 ...
 - THD 变量存入threads中
			
http://blog.csdn.net/gapaul/article/details/12047497 http://ourmysql.com/archives/930
 - Tuple类型
			
Tuple类型类似的体现了C#中的匿名类型 var person=new { Name="Eric"; Age=18: } 调用: Console.writeline( perso ...
 - j疑难杂症:ava.lang.NoSuchMethodError: com.opensymphony.xwork2.util.finder.ClassFinder.<init>
			
严重: Exception starting filter struts2java.lang.NoSuchMethodError: com.opensymphony.xwork2.util.finde ...
 - linux下的十六进制编辑器---wxHexEdit
			
....其实wxHexEdit是一个跨平台的十六进制编辑器,支持windows,linux,mac. 之所以标题用linux...是因为windows下多数都用winhex,UE之类的编辑器,而lin ...
 - Anatomy of the Linux kernel--转
			
ref:http://www.ibm.com/developerworks/linux/library/l-linux-kernel/?S_TACT=105AGX52&S_CMP=cn-a-l ...