为了更加个性化,系统提供的字体,有时候没法满足我们的要求,所以cocos2dx提供了自定义字体控件。

分别是CCLabelBMFont和CCLabelAtlas,先看BMFont的效果

CCLabelBMFont* label = CCLabelBMFont::create("abc", "fonts/bitmapFontTest.fnt");
addChild(label);
label->setPosition(ccp(__winSize.width/2, __winSize.height/2));


cocos2dx 字体BMFont,Atlas_2d

在上面的代码中,我们创建了一个CCLabelBMFont,第一个参数制定要显示的内容,第二个参数制定了一个字体文件,我们来看看这个字体文件吧

cocos2dx 字体BMFont,Atlas_控件_02

从字体文件看到有个file=“bitmapFontTest.png”指的是,字体图片

后面每一行制定了一个字符的位置,再看看bitmapFontTest.png吧

cocos2dx 字体BMFont,Atlas_2d_03

这个才是真正的字体文件,哪个fnt文件其实是字体的描述文件,这个道理懂了就行,一般这种事情是美工来做的

程序员知道个原理就行了。

因为BMFont可以详细制定每个字符的大小,因此它可以做成不等宽的,cocos2dx还提供一种等宽图片字体,它的处理不太相同。

--------------------------atlas

还是一样先看例子

// 等宽
CCLabelAtlas* label2 = CCLabelAtlas::create("1000", "fonts/labelatlas.png", 16, 20, '.');
addChild(label2);
label2->setPosition(ccp(__winSize.width/2+200, __winSize.height/2+200));


cocos2dx 字体BMFont,Atlas_控件_04

创建函数第一个“1000”,表示要显示的内容,第二个参数表示字体文件,第三个和第四个参数表示每个字的宽度和高度,嗯,等宽体现在这里了,最后一个表示字体文件里,第一快图片对应的字符。

我们也来看看字体文件,

cocos2dx 字体BMFont,Atlas_2d_05

由于是等宽,所以不需要描述文件了,直接用图片,但是每个字占的像素还是要和美工沟通好啊,不然就自己琢磨吧。