cocos2d-x 文本标签的用法

来源:互联网 发布:软件企业认定条件 编辑:程序博客网 时间:2024/05/16 19:39

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很强大。。。。


0 0