尊重知识版权,文章转载于:http://www.taikr.com/group/2/thread/1869
这次主要介绍一下关于cocos2d-x 3.x label自动换行的问题,详细的总结一下Cocos2d-x中新字体标签Label,总结如下:
在3.x中,Label支持四种方式的标签创建。并新增了阴影Shadow、轮廓Outline、发光Glow效果的支持。还支持文字内容的行间距、文字间距、自动换行的设置。
-
创建系统原生字体API:createWithSystemFont
-
创建TTF:createWithTTF(原LabelTTF)
-
创建CharMap:createWithCharMap(原LabelAtlas)
-
创建BMFont:createWithBMFont(原LabelBMFont)
-
对齐方式:TextHAlignment、TextVAlignment
-
Label的尺寸大小
-
自动换行
-
行间距、文字间距
-
单独设置某个字符
PS:关于图片资源,请在Cocos2dx给出的官方样例cpp-tests中寻找。
【createWithSystemFont】
创建系统原生字体的API。
创建方式如下:
//static Label* createWithSystemFont(
const std::string& text,//字符串内容
const std::string& font,//字体(字体名称、或字体文件)
float fontSize,//字号
const Size& dimensions = Size::ZERO,//label的尺寸大小,默认不设置尺寸
TextHAlignment hAlignment = TextHAlignment::LEFT,//水平对齐方式,默认左对齐::LEFT
TextVAlignment vAlignment = TextVAlignment::TOP //垂直对齐方式,默认顶部 ::TOP
);
//
//
//使用系统的字体名称 "Arial" 来创建
Label* lb1 = Label::createWithSystemFont("123abc","Arial",24);
//
【createWithTTF】
创建TTF的方式有以下两种:
-
方式一:与2.x中LabelTTF的创建类似,不过使用的fontFile必须为字体文件。
-
方式二:通过TTF的配置信息数据结构TTFConfig来创建。
1、方式一:与SystemFont创建类似
注:区别在于fontFile必须为字体文件(如"*.ttf"),即不支持使用系统字体名称来创建。
2、方式二:通过TTFConfig配置来创建
2.1、TTFConfig配置
//
2.2、使用TTFConfig创建TTF
staticLabel*createWithTTF(
//
TTFConfigttfConfig;
//
【createWithCharMap】
CharMap的用法与2.x中的LabelAtlas是一样的,一般用来显示数字。不过它也可以用来显示其他字符,如英文字符。
注:图片中每个字符的大小必须是固定的,若要改变字体大小,只能通过setScale放缩来实现。
创建CharMap有三种方式:
-
使用.png图片创建
-
使用纹理Texture2D创建
-
使用.plist创建
从图片中从左到右,一块一块截取。从字符startCharMap开始一一对应。
第一块小图片对应字符startCharMap;第二块小图片对应字符startCharMap+1;第三块对应startCharMap+2……以此类推。
注:startCharMap为ASCII码,即:数字'0'为48。
0、字符图片资源
digit.png:200*20(每个数字20*20)。
1、使用.png创建
2、使用Texture2D创建
使用方法实际上与.png是类似的。
3、使用.plist创建
在digit.plist里需要配置:用到的字符图片资源.png,每个字符的宽、高,起始字符。
如下所示:
//
<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEplistPUBLIC"-//Apple//DTDPLIST1.0//EN""
http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plistversion="1.0">
<dict>
<key>version</key><!--plist版本-->
<integer>1</integer>
<key>textureFilename</key><!--字符图片资源:digit.png-->
<string>digit.png</string>
<key>itemWidth</key><!--每个字符的宽:20-->
<integer>20</integer>
<key>itemHeight</key><!--每个字符的高:20-->
<integer>20</integer>
<key>firstChar</key><!--起始字符:'0'-->
<integer>48</integer>
</dict>
</plist>
//
|
使用plist创建CharMap的方法:
【createWithBMFont】
BMFont的用法与2.x中的LabelBMFont是一样的。
这个类使用之前,需要添加好字体文件,包括一个图片文件(*.png)和一个字体坐标文件(*.fnt),这两个文件名称必须一样。可以下载一个fnt编辑工具来自定义字体。
值得注意的是:
这个类也没办法指定字体的字号大小,需要用setScale来缩放调整大小。
使用举例:
//
Label*lb7=Label::createWithBMFont("bitmapFontTest.fnt","123abc",TextHAlignment::LEFT);
//
|
Label继承于:
-
SpriteBatchNode:用于加快字体的渲染速度。
-
LabelProtocol:用于设置Label的字符串内容。
主要函数如下: