第三节:标签的使用

cocos2d-x标签简介:

在游戏开发中,经常要使用标签文字,例如,游戏介绍、玩家积分、菜单选项、文字提示等等。而在cocos2d-x中提供了三种创建标签文字的方式,分别是
LabelTTF,字体标签,即使用系统字体来创建标签。
LabelBMFont,位图标签,每个字都是一个位图精灵。
LabelAtlas,图集标签,通过一张图片和配置信息来创建文字。

使用LabelTTf字体标签:

我在最新的xcode中编程,显示警告,这个标签已经弃用。同时也因为其它渲染效率不高,我觉得,应该减少使用。

1:LabelTTF字体标签垢使用比较简单,而且很少使用,因为渲染效率相对LabelBMFont和LabelAtlas较差。
2:创建LabelTTF字体标签,一般使用静态的create方法,因为这样不用手动管理内存。
3:LabelTTF的几个创建方法,直接看代码吧,我会详细注释的:

第一种方法:
    //使用静态方法创造标签,第一个参数是要显示的内容,第二个参数是使用字体的名称,第三个参数是字体的大小
    auto label = LabelTTF::create("测试", "Arical", 24);
    //设置字体标签的位置
    label->setPosition(Point(size->width/2,size->height/2));
    //将字体标签添加到当前场景显示
    this->addChild(label);

第二种方法:

    //创建一个区域,让文字显示在这个区域内
    Size block_size = Size(300, 300);
    //创建一个颜色图层
    LayerColor *layerColor = LayerColor::create(Color4B(100,100,100,255), block_size.width, block_size.height);
    //设置颜色图层的位置
    layerColor->setPosition(size->width/2,size->height/2);
    //设置颜色图层的锚点
    layerColor->setAnchorPoint(Point(0,0));
    //使用静态方法创造标签,第一个参数是要显示的内容,第二个参数是使用字体的名称,第三个参数是字体的大小,第四个参数是显示区域大小,第五个参数是水平对齐方式,第六个参数是垂直对齐方式
    //TextHAlignment有三个枚举常量:LEFT,CENTER,RIGHT
    //TextVAlignment也有三个枚举常量:BOTTOM,TOP,CENTER
    auto label_two = LabelTTF::create("测试区域", "Arical", 30,block_size,TextHAlignment::CENTER,TextVAlignment::CENTER);
    //设置标签的位置
    label_two->setPosition(block_size.width/2, block_size.height/2);
    //把标签添加到颜色图层
    layerColor->addChild(label_two);
    //把颜色图层添加到场景里面去
    this->addChild(layerColor);

除了上面两个创建方法,LabelTTF还有两个常用的方法,就是
virtual void setString(const char *label)
virtual const char* getString()
第一个方法,可以设置标签内容,第二个方法,得到标签内容。

LabelBMFont标签的使用:

LabelBMFont类继承于SpriteBatchNode,使用图片可以批量加载,所以提高了渲染效率。
另外,可以把每个字符当作一个Sprite使用,这意味着每一个单独的字符都可以有自己单独的动作,例如,旋转,放大,改变透明等。
关于如何使用,还是直接看代码,每一行都有注释:

    //第一个参数是要显示的文本内容,第二个参数是fnt配置文件的名字,该文件描述了使用哪个图片文件,以及字符图片的属性
    auto label_bm = LabelBMFont::create("fdsfjksdalfjsad", "font-issue1343-hd.fnt");
    //设置标签的位置
    label_bm->setPosition(Point(size->width/2,size->height/2));
    //将标签添加到场景
    this->addChild(label_bm);


给其中的某些字符添加动作:

    //第一个参数是要显示的文本内容,第二个参数是fnt配置文件的名字,该文件描述了使用哪个图片文件,以及字符图片的属性
    //关于这个配置文件,初学者,可以直接去cocos2d的test的resourse里面找,里面有很多这样的文件,大家可以打开看看里面是什么
    //关于如何生成配置文件等,这些,大家可以去百度一下,这里就不写了
    auto label_bm = LabelBMFont::create("hello world", "font-issue1343-hd.fnt");
    //设置标签的位置
    label_bm->setPosition(Point(size->width/2,size->height/2));
    
    //获取精灵,后面的参数表示第几个,这里的0对应字符串中的"h"
    auto *sprite_one = label_bm->getChildByTag(0);
    auto *sprite_two = label_bm->getChildByTag(7);
    
    //创建一个闪烁的动作,第一个参数表示闪烁时间,第二个表示闪烁次数
    auto act_one = Blink::create(15, 10);
    //创建一个旋转动作,第一个参数表示动作执行时间 ,第二个参数表示旋转的角度
    auto act_two = RotateBy::create(15, 306);
    
    //精灵执行动作,RepeatForver表示一直重复执行
    sprite_one->runAction(RepeatForever::create(act_one));
    sprite_two->runAction(RepeatForever::create(act_two));
    //将标签添加到场景
    this->addChild(label_bm);



关于它的创建,还有一种方法,有更多参数,看例子:

    //第一个参数是要显示的文本内容,第二个参数是fnt配置文件的名字,该文件描述了使用哪个图片文件,以及字符图片的属性,
    //第三个参数表示字符显示的宽度,第四个参数表示对齐方式,第五个参数表示字符偏移量
    auto label_bm = LabelBMFont::create("hello world", "font-issue1343-hd.fnt",1000,TextHAlignment::CENTER,Point(0,0));
    //设置标签的位置
    label_bm->setPosition(Point(size->width/2,size->height/2));
    //将标签添加到场景
    this->addChild(label_bm);

LabelAtlas的用法:

LabelAtlas和LAbelBMFont类似,也需要从一张图片文件中取字符,但是它们的实现原理不一样。这个类会将传入的图片“分成”指定宽高的小块,根据需要获得字符的ASCII与startCharMap指定的图中的第一个字符的ASCII计算偏移量,取得对应的小块。这就需要图中的字符是按照ASCII的顺序连续排列的。关于这方面的制作,大家可以自行百度。

void MyScene::testLabel_7()
{
    //第一个参数是要显示的文字,第二个参数是配置文件的名字
    auto label_at = LabelAtlas::create("THIS IS A TEST", "larabie-16.plist");
    //设置位置
    label_at->setPosition(size->width/2,size->height/2);
    //添加到当前场景
    this->addChild(label_at);
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值