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修改标签中的文本且不影响其中标签 * 说明: * ... 
随机推荐
- 2016 icpc-camp 之旅(一)
			啦啦啦,终于前往icpccamp啦! 嗯,该死的飞机居然晚点了! 诶,晚点居然还会发赔偿金! 飞机上没什么好说的,和萌神一起看了5集龙与虎,然后就到了. 讲道理,海南航空感觉一般. 我的座位前面有个平 ... 
- Codeforces Round #312 (Div. 2) C. Amr and Chemistry 暴力
			C. Amr and Chemistry Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/558/ ... 
- Android实现数据存储技术
			转载:Android实现数据存储技术 本文介绍Android中的5种数据存储方式. 数据存储在开发中是使用最频繁的,在这里主要介绍Android平台中实现数据存储的5种方式,分别是: 1 使用Shar ... 
- 纯css3实现的动画加载条
			之前大大家分享了很多款加载条.今天给大家带来一款纯css3实现的动画加载条. 这款加载条适用浏览器:360.FireFox.Chrome.Safari.Opera.傲游.搜狗.世界之窗. 不支持IE8 ... 
- Android root 原理
			Android root 原理 0x00 关于root linux和类Unix系统的最初设计都是针对多用户的操作系统,对于用户权限的管理很非常严格的,而root用户(超级用户)就是整个系统的唯一管理员 ... 
- C++面向对象设计
			一. 组合(复合),继承,委托 1.composition(组合)has-a 1.1 组合举例:(Adapter 设计模式) 关系: 利用deque功能实现所有queue功能 template < ... 
- iOS  定位系统 知识
			最近在做考勤定位系统 总结一些定位系统的知识. 后期会出一份算法主要攻克地球坐标和火星坐标转换的 1.关于百度的火星坐标定位策略 地图SDK/定位SDK的定位策略: WIFI + 基站 +GPS 三者 ... 
- 【原创】一些常用的Vi命令,可帮助脱离鼠标
			使用Vi编写代码时,如果想脱离鼠标,需要使用一些命令快捷键,下面罗列了一些常用的并且容易记住的: 1. 命令模式下,移动光标或跳转 0到行首 ^到行首第一个非空字符 $到行尾非空字符 fx向后移动光标 ... 
- 21世纪C语言(影印版)
			<21世纪C语言(影印版)> 基本信息 原书名:21st Century C 作者: Ben Klemens 出版社:东南大学出版社 ISBN:9787564142056 上架时间:201 ... 
- 新手留言薄asp.net MVC 学习(适合新手学习)
			以下是发布到IIS后的效果截图: 1)首页展示: 2)登录后台页面展示: 3)后台页面展示: 该项目源代码下载地址:http://files.cnblogs.com/files/f12-liugang ... 
