您的位置:首页 > 其它

第三节:标签的使用

2015-06-04 16:17 495 查看

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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: