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 );

更多内容请关注最新Cocos图书《Cocos2d-x实战:JS卷——Cocos2d-JS开发》
本书交流讨论网站:http://www.cocoagame.net

欢迎加入Cocos2d-x技术讨论群:257760386

更多精彩视频课程请关注智捷课堂Cocos课程:http://v.51work6.com

智捷课堂现推出Cocos会员,敬请关注:http://v.51work6.com/courseInfoRedirect.do?action=netDetialInfo&courseId=844465&categoryId=0

《Cocos2d-x实战 JS卷》现已上线,各大商店均已开售:

京东:http://item.jd.com/11659698.html

欢迎关注智捷iOS课堂微信公共平台,了解最新技术文章、图书、教程信息

时间: 2024-10-05 16:38:32

Cocos2d-JS中的文本菜单的相关文章

如何编写网页代码从而获取js中某个文本框的value??

问题描述 <formid="virtualTollFreeUserForm"method="post"action="http://www.voxalot.com/action/virtualTollFreeUser"><inputtype="hidden"name="task"value="call"/><inputtype="hidden&qu

JS实现下拉菜单赋值到文本框的方法_javascript技巧

本文实例讲述了JS实现下拉菜单赋值到文本框的方法.分享给大家供大家参考.具体如下: 这里演示下拉菜单和文本框构建的介绍栏,将Select框中的值定位到INPUT文本输入框中,是下拉框赋值到文本框的实例,上网时候貌似经常见的功能,只是不知如何形容,或许叫做联动吧. 运行效果如下图所示: 在线演示地址如下: http://demo.jb51.net/js/2015/js-select-to-input-val-codes/ 具体代码如下: <html> <head> <SCRIP

Swing中为文本组件定制统一的菜单

在很多软件中每个文本组件都有自定义的菜单,这个blogjava的编辑器就有这样的菜单如:Cut , Copy,Paste,Delete,Select All,在Swing中若也想在JTextField,JTextArea,JEditorPane,JTextPane等等这些组件中都提供如此自定义菜单的功能,每个都写继承类?或者加鼠标监听事件?但不管怎样弄都会实现效果,只不过这样动静很大,不好维护,今天在网上看到一个很是方便的方法. 大家都知道,Swing中所有的事件都是进入java.awt.Eve

性能-在js中 有个文本框ID=a 我已经判断它不能输入为空格 但是..

问题描述 在js中 有个文本框ID=a 我已经判断它不能输入为空格 但是.. 在js中 有个文本框ID=a 我已经判断它不能输入为空格 但是如果输入空格空格+字符的时候它就能存进去了 在数据库里就会显示空格空格+字符 这样影响数据库的性能 我就想那样可以输入空格 但是存在数据库的时候 那个空格就没有了 改怎么实现???js jquery 都可以 解决方案 你服务器端将空格去掉就行了.. 或者提交前js替换掉空格,不过这个不保证100%能去掉,别人禁用js就无效了,或者直接post数据到你的动态页

JAVA中在文本框中输入字符后如何在弹出下拉菜单中出现对应的选项,急求各位大师。

问题描述 JAVA中在文本框中输入字符后如何在弹出下拉菜单中出现对应的选项,急求各位大师. 如何1是电汇,2是信用证.当我在文本框中输入1后,自动弹出下拉菜单:1 电汇. 请说的详细些,这问题真的困扰我很久了.谢谢各位啦. 解决方案 能不能把问题描述的更详细点 输入1 对应的选项 电汇..是从数据库中查询的 还是只是前台的一个效果 解决方案二: 是不是类似于搜索引擎那种,比如百度一样,输入一个三国下面会显示出三国******什么的. 解决方案三: 你说的是自动补全吧,如果是输入框,必须监听输入状

js获取-怎么在js中获取这些文本框的数组name

问题描述 怎么在js中获取这些文本框的数组name 多个文本框的name属性不同,但是各个文本框的name是一个数组,比如name='examscores[i].score',怎么在js中获取这些文本框的数组name,ps:这些文本框是通过ajax在后台action里面,out.writer("""")到前台的,请问有没有人知道怎么做 解决方案 var ipt=document.getElementsByTagName('input');for(var i=0;i&

JAVA中在文本框输入一个字符,下拉菜单中自动检索出现对应的字符怎么实现,急求各位大师了。

问题描述 JAVA中在文本框输入一个字符,下拉菜单中自动检索出现对应的字符怎么实现,急求各位大师了. 如1对应电汇,2对应信用证 当我在本框中输入1,则自动弹出对应下拉菜单:电汇 解决方案 网上一大堆,看你是要动态渲染,还是静态!

vc++-VC++中如何实现office中通过文件菜单打开命令,在试图中显示文本内容并且可以编辑?

问题描述 VC++中如何实现office中通过文件菜单打开命令,在试图中显示文本内容并且可以编辑? VC++中如何实现office中通过文件菜单打开命令,在试图中显示文本内容并且可以编辑通过CDC的文本输出函数在视图上显示的文本不能编辑 解决方案 你的意思是你希望做一个类似文本编辑器的程序吧,你不能用手动绘图的方式去实现,MFC好像有类似的功能提供.你用多文档模式或者单文档模式,视图类继承CEditView就自动可以编辑了. 希望能够帮到你. 解决方案二: 是不是自己做一个mfc单文档程序,然后

js 获取下拉菜单的值传给文本框

提示:您可以先修改部分代码再运行 js 获取下拉菜单的值传给文本框   车仔手札    蓝色经典    织梦地带    联盟论坛    无忧脚本   提示:您可以先修改部分代码再运行