From: http://www.jb51.cc/article/p-fdmvdxhh-wx.html
【唠叨】
CCLabelTTF、CCLabelAtlas、CCLabelBMFont。
cocos2dx提供了三种文字字体的显示:CCLabelTTF(一般字体)、CCLabelAtlas(自定义字体)、CCLabelBMFont(自定义字体)。接下来给大家讲讲这三种字体的使用方法。
【Demo下载】
http://down.51cto.com/data/1863986
【3.x】
请移步:http://www.jb51.cc/article/p-zgqiddzs-wx.html
【CCLabelTTF】
CCLabelTTF是最简单且使用最方便的字体类,可以使用.ttf格式的字体。其父类为CCSprite,所以也继承了CCSprite所有的操作,故也可以将其当做CCSprite来用。
CCLabelTTF每次调用 setString(即改变文字)的时候,一个新的OpenGL纹理将会被创建。这意味着setString和创建一个新的标签一样慢。所以,当你需要频繁的更新显示的文字内容的时候,尽可能不去使用该对象,而是使用CCLabelAtlas或者是CCLabelBMFont。
1、常用操作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
//
class
CC_DLLCCLabelTTF:
public
CCSprite,
CCLabelProtocol
{
/**
* 创建CCLabelTTF的三种方法
*/
static
CCLabelTTF*create(
const
char
*string,monospace!important; font-weight:normal!important; font-style:normal!important; font-size:1em!important; min-height:inherit!important; color:black!important">*fontName,
float
fontSize);
fontSize,153)!important">const
CCSize&dimensions,CCTextAlignmenthAlignment);
/**
* 属性设置
* setString,
* setHorizontalAlignment,setVerticalAlignment,
* setDimensions,setFontSize,setFontName
*/
void
setString(
*label);
*getString(
);
//水平对齐方式CCTextAlignment::
//kCCTextAlignmentLeft左对齐
//kCCTextAlignmentCenter居中,默认方式
//kCCTextAlignmentRight右对齐
setHorizontalAlignment(CCTextAlignmentalignment);
CCTextAlignmentgetHorizontalAlignment();
//垂直对齐方式CCVerticalTextAlignment::
//kCCVerticalTextAlignmentBottom底部
//kCCVerticalTextAlignmentCenter中心
//kCCVerticalTextAlignmentTop顶部,默认方式
setVerticalAlignment(CCVerticalTextAlignmentverticalAlignment);
CCVerticalTextAlignmentgetVerticalAlignment();
//尺寸大小
setDimensions(
CCSize&dim);
CCSizegetDimensions();
//字体大小
setFontSize(
fontSize);
getFontSize();
//字体类型名如Arial,宋体等
setFontName(
@H_888_404@*getFontName();
*fontName);
/**
* 继承自CCSprite常用函数
* 更多操作见:http://shahdza.blog.51cto.com/2410787/1539567
*/
setColor(ccColor3B);
//设置颜色
setPosition(CCPoint);
//设置位置
setRotation(
);
//旋转角度,角度制0~360
setOpacity(
//设置透明度
setScale(
//放缩
setFlipX(
//左右翻转
}
//
|
2、代码举例
HelloWorld::init()
(!CCLayer::init())
return
false
;
"aaaaaaaa"
,
"arial"
CCLabelTTF*lb2=CCLabelTTF::create(
"bbbbbbbb"
"宋体"
CCLabelTTF*lb3=CCLabelTTF::create(
"cccccc"
"黑体"
->addChild(lb1);
//设置颜色ccc3
//旋转
//设置颜色ccBLUE
4、分析与总结
(1)lb2由于设置了其尺寸大小为CCSizeMake(50,100),所以只显示了一部分的内容。
(2)lb3的对齐方式为右下角显示。
(3)CCLabelTTF的锚点为(0.5,0.5)。
【CCLabelAtlas】
CCLabelAtlas一般常用来显示数字信息,如分数、排名等。因为只是数字所以也犯不上使用CCLabelBMFont加载那么大的文字图像,所以使用这个比较合适。而资源一般来自一张.png图片,或.plist文件。不过它也可以用来显示其他字符,如英文字符。
当然CCLabelAtlas继承于CCNode类,故可以使用父类的一些函数,如:放缩、旋转等操作。
并且图片中每个字符的大小必须是固定的,若要改变字体大小,只能通过放缩来实现。
例如如下图数字图片资源:
1、常用操作
CCAtlasNode,0)!important">* 创建CCLabelAtlas字体方法
*charMapFile,unsigned
int
itemWidth,monospace!important; font-weight:normal!important; font-style:normal!important; font-size:1em!important; min-height:inherit!important; color:black!important">itemHeight,monospace!important; font-weight:normal!important; font-style:normal!important; font-size:1em!important; min-height:inherit!important; color:black!important">startCharMap);