coco2d-js菜单项cc.MenuItem详解

本文详细介绍了coco2d-js中的菜单项cc.MenuItem,包括文本菜单(cc.MenuItemFont和cc.MenuItemAtlasFont)、精灵菜单、图片菜单以及开关菜单的使用方法和构造函数。通过示例代码展示了如何创建和操作这些菜单项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

菜单中又包含菜单项,菜单项是cc.MenuItem,每个菜单项都有三个基本状态:正常、选中和禁止。菜单间接继承自cc.Node,继承了cc.Node的相关特性。

cc.MenuItem类图如下:
这里写图片描述

1、文本菜单 cc.MenuItemLabel

文本菜单是菜单项只能显示文本,文本菜单类包括cc.MenuItemLabelcc.MenuItemFontcc.MenuItemAtlasFontcc.MenuItemLabel是个抽象类,具体使用的时候是使用 cc.MenuItemFontcc.MenuItemAtlasFont 两个类。

① 文本菜单 cc.MenuItemFont

使用系统字体或自定义字体作为菜单的字体,其其中一构造函数如下:

ctor(text, fontName, callback, target)

参数说明:

text 文本内容
callback 菜单操作的回调函数指针
target 函数所在的对象

代码实例:

// 创建文本菜单
var item = new cc.MenuItemFont('lalalala', function() {
        console.log('艾玛你点到我了');
    }, this),
    menu = new cc.Menu(item);
item.setFontName('Arial');  // 设置文本字体
item.setFontSize(30);       // 设置字体大小
this.addChild(menu);
② 图片集文本菜单 cc.MenuItemAtlasFont

基于文本图片集的文本菜单项,其其中一构造函数如下:

ctor(value, charMapFile, itemWidth, itemHeight, startCharMap, callback);

参数说明:

value: 文本内容
charMapFile: 图片集文件路径,一般在资源加载res变量中定义
itemWidth: 要截取的文字在图片中的宽度
itemHeight: 要截取的文字在图片中的高度
startCharMap: 开始字符
callback: 菜单操作的回调函数指针

代码示例:

// var res = { number: 'res/number.png'; }

// 创建图片集文本菜单
var item = new cc.MenuItemAtlasFont('123123', res.number, 60, 60, '0', function() {
        console.log('艾玛你点到我了');
    }, this),
    menu = new cc.Menu(item);
this.addChild(menu);

来来来,给张图片集文本的图片做个练习(单字符宽高分别为60):
图片集文本


2、精灵菜单 cc.MenuItemSprite

具有精灵的特点,可以让精灵动起来,具体使用时把一个精灵放入菜单中作为菜单项。
使用精灵菜单较麻烦,需要先创建3种不同状态所需要的精灵(即 normalSprite, selectedSpritedisabledSprite )。如果精灵是由图片构成,可以使用 cc.MenuItemImage 实现与精灵菜单同样的效果。
精灵菜单其中一构造函数如下:

ctor(normalSprite, selectedSprite, callback, target)

参数说明:

normalSprite: 菜单项正常显示时的精灵
selectedSprite: 选择菜单项时显示的精灵
callback: 菜单操作的回调函数指针
target:函数所在的对象

代码示例:

// 创建精灵菜单
var sp1  = new cc.Sprite(res.normal_png),
    sp2  = new cc.Sprite(res.selected_png),
    item = new cc.MenuItemSprite(sp1, sp2, function() {
        console.log('艾玛你点到我了');
    }, this),
    menu = new cc.Menu(item);
this.addChild(menu);

3、图片菜单 cc.MenuItemImage

由于图片菜单继承于cc.MenuItemSprite,所以图片菜单也属于精灵菜单,使用静态图片作为菜单显示内容。其构造函数如下:

ctor(normalImage, selectedImage, callback, target)

参数说明:

normalImage: 菜单项正常显示时的图片
selectedImage: 选择菜单项时的图片
callback: 菜单操作的回调函数指针
target: 函数所在的对象

代码示例:

/*
    var res = {
        normal_png: 'res/normal.png',
        selected_png: 'res/selected.png',
    }
*/
// 创建图片菜单
var item = new cc.MenuItemImage(res.normal_png, res.selected_png, function() {
        console.log('艾玛你点到我了');
    }, this),
    menu = new cc.Menu(item);
this.addChild(menu);

4、开关菜单 cc.MenuItemToggle

是一种可以进行两种状态切换的菜单项,可以用来做音乐开关按钮等;其构造函数如下:

ctor(onMenuItem, offMenuItem, callback, target)

参数说明:

onMenuItem: 菜单项On时的菜单项
offMenuItem: 菜单项Off时的菜单项
callback: 菜单操作的回调函数指针
target: 函数所在的对象

代码示例:

// 创建开关菜单
var item = new cc.MenuItemToggle(
        new cc.MenuItemFont('On'),
        new cc.MenuItemFont('Off'),
        function() {
            console.log('艾玛你点到我了');
        },
        this
    ),
    menu = new cc.Menu(item);
this.addChild(menu);

如需转载请注明出处!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值