您的位置:首页 > 移动开发 > Cocos引擎

cocos2d-x 文本标签的用法

2016-04-08 12:45 453 查看
Cocos2d-x中标签类,标签类主要有三种:LabelTTF、LabelAtlas、LabelBMFont,此外,3.x推出新的标签类。

1、LabelTTF是使用系统中的字体,它是最简单的标签类,它是继承Node类,具有Node类的基本属性。

LabelTTF的其中一个create函数如下:

static LabelTTF * create(

const std::string& string,

const std::string& fontName,

float fontSize,

const Size& dimensions = Size::ZERO,

TextHAlignment hAlignment = TextHAlignment::CENTER,

TextVAlignment vAlignment = TextVAlignment::TOP);

这里我大家解释下各个参数的作用:第一个参数是我们要显示的文本,他是一个字符串类型;第二个参数是我们字体文件的路径也是字符串类型;第三个参数是我们要显示字体的大小,是Size类型;第四个参数是指在屏幕上占用的区域大小,可省略;第五个参数是指文字横向对齐方式,也可省略;第六个参数是纵向对齐方式,可省略。

2、LabelAtlas是图片集标签,其中Atlas本意是“图片集”,这种标签显示的文字是从一个图片集中取出来的,因此需要额外加载图片集文件。

LabelAtlas比LabelTTF快很多。LabelAtlas中的每个字符必须有固定的高度和宽度。

static LabelAtlas* create(

const std::string& string,

const std::string& charMapFile,

int itemWidth,

int itemHeight,

int startCharMap);

同样的各个参数作用:第一个参数也是要显示的文本,第二个参数是文件名(包括文件路径,文件是图片集文件,格式.png);第三、四个参数是该字体在图片集里的高度和宽度,第五个参数是图片集的开始字符。

3、LabelBMFont是位图字体标签,需要添加字体文件:暴扣一个图片集(.png)和一个字符坐标文件(.fnt)。LabelBMFont比LabelTTF快很多,LabelBMFont中的每个字符的宽度是可变的。

LabelBMFont是继承Node类,具有Node类的基本特性。

static LabelBMFont * create(

const std::string& str,

const std::string& fntFile,

float width = 0,

TextHAlignment alignment = TextHAlignment::LEFT,

const Vec2& imageOffset = Vec2::ZERO);

第一个参数是要显示的文本,第二个参数是fnt文件(包括路径),第三个参数是宽度,第四个是参数是横向对齐方式,第五个参数是字体色调。

除以上这三个比较常见的文本字体类外,我们cocos2d-x 的Label里还有一些常用的函数,通过这些方法我们也可以创建我们想要的字体,下面我们来介绍一下他们:

1、Label创建系统标签对象,它的创建方法如下:

static Label* createWithSystemFont(

const std::string& text,

const std::string& font,

float fontSize,

const Size& dimensions = Size::ZERO,

TextHAlignment hAlignment = TextHAlignment::LEFT,

TextVAlignment vAlignment = TextVAlignment::TOP);

这里我们就介绍下第三个参数,其他的参数上面有相同的,我就不介绍了,第三个参数是指改字体在屏幕中占用的大小。

2、Label创建TTF字体标签对象:

static Label * createWithTTF(

const std::string& text,

const std::string& fontFilePath,

float fontSize,

const Size& dimensions = Size::ZERO, TextHAlignment hAlignment = TextHAlignment::LEFT,

extVAlignment vAlignment = TextVAlignment::TOP);

参数介绍看上面的。

3、static Label* createWithTTF(

const TTFConfig& ttfConfig,

const std::string& text,

extHAlignment hAlignment = TextHAlignment::LEFT,

int maxLineWidth = 0);

其中:第一个参数是创建一个TTFConfig结构体变量

我们看看这个结构体的整体

_ttfConfig(

const std::string& filePath = "",

float size = 12,

const GlyphCollection& glyphCollection = GlyphCollection::DYNAMIC,

const char *customGlyphCollection = nullptr, bool useDistanceField = false,

int outline = 0)

第一个参数是字体文件路径

第二个参数是字体大小

第三个参数是字体库类型

第四个参数是自定义字体库

第五个参数是开启距离字段字体开关

第六个参数是字体描边。

4、Label创建BM标签对象

static Label* createWithBMFont(

const std::string& bmfontPath,

const std::string& text,

const TextHAlignment& hAlignment = TextHAlignment::LEFT,

int maxLineWidth = 0,

const Vec2& imageOffset = Vec2::ZERO);

参数介绍看上面。

好了,常用的创建文本的方法介绍的差不多了,在这里要跟大家说下,其实在Label里的上面这些创建文本方法都可以用Label的create方法代替,create重载了以上的四种方法,突然感觉create很强大。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: