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));