Label(标签)

Label(标签)

Cocos2d-x中提供了Label(标签)对象来创建TTF、BMFont和SystemFont文本。

Label BMFont(BMFont标签)

BMFont是使用位图字体的标签类型。位图字体是由点或像素矩阵所组成,这些点和像素代表了字符图形的外形和大小。位图字体的使用很方便也很容易,但它不可伸缩,其每个尺寸都需要一个单独的字体。

Label类是SpriteBatchNode的子类,所以Label的每个字符都可以看作一个Sprite(精灵),都具有旋转、缩放、着色,改变锚点以及其他继承自Node对象的属性。

创建一个BMFont文本需要两个文件:一个.fnt文件和一个显示每一个对象的.png格式的图片。利用像Glyph Designer这样的工具可以自动创建该类型的文件。

创建一个BMFont文本:

 1 auto myLabel = Label::createWithBMFont("myFont.fnt", "My Label Text"); 

字符串内所有的字符都要包含在MyFont.fnt文件中,否则它们将不会被渲染。假设渲染一个缺少字符的Label,那么就要确保它们都在你的MyFont.fnt文件中。

Label TTF(TTF标签)

TTF是一个 True Type Font 的标签类型。创建TTF标签你需要指定一个.ttf格式的字体文件名、文本字符串以及字体大小。与BMFont不同,TTF可以改变字体的显示大小,无需单独的字体。

创建一个TTF标签:

 1 auto myLabel = Label::createWithTTF("myFont.ttf", "My Label Text", 16); 

尽管TTF标签比BMFont更灵活,但它的效率是更低的,并且修改如字形和大小等属性都是一个复杂的操作。如下为使用TTF创建Label的示例:

如果你需要一些具有相同属性的TTF标签,你可以通过创建一个TTFConfig对象来管理它们。TTFConfig允许你为所有的TTF标签设置共同的属性。如下:

 1 // create a TTFConfig files for labels to share
 2 TTFConfig labelConfig;
 3 labelConfig.fontFilePath = "myFont.ttf";
 4 labelConfig.fontSize = 16;
 5 labelConfig.glyphs = GlyphCollection::DYNAMIC;
 6 labelConfig.outlineSize = 0;
 7 labelConfig.customGlyphs = nullptr.
 8 labelConfig.distanceFieldEnabled = false;
 9  
10 // create a TTF Label from the TTFConfig file;
11 auto myLabel = Label::createWithTTF(labelConfig, "My Label Text");

TTFConfig还可以用于显示中文、日文和韩文字符。

Label SystemFont(系统字体标签)

SystemFont是一个使用系统默认的字体和尺寸的标签类型。意思就是说我们不能修改字体的属性,你可以理解为是一种系统字体,系统规则。创建一个SystemFont标签:

 1 auto myLabel = Label::createWithSystemFont("My Label Text", "Arial", 16); 

标签效果和排版

标签效果

Label对象有一些实话它们的特效效果。当然,不是所有的标签类型都支持所有的特效。这些特效包括阴影、轮廓和光晕效果。

1 // shadow effect is supported by all Label types
2 myLabel->enableShadow();
3 
4 // outline effect is TTF only, specify the outline color desired
5 label->enableOutline(Color4B(100, 50, 100, 100));
6 
7 // glow effect is TTF only, specify the glow color desired.
8 label->enableGlow(Color4B(100, 50, 100, 100));
原文地址:https://www.cnblogs.com/dudu580231/p/4537643.html