cocos2dx基础篇(6)——字体标签CCLabel
From: http://www.52php.cn/article/p-fdmvdxhh-wx.html 【唠叨】 CCLabelTTF、CCLabelAtlas、CCLabelBMFont。 cocos2dx提供了三种文字字体的显示:CCLabelTTF(一般字体)、CCLabelAtlas(自定义字体)、CCLabelBMFont(自定义字体)。接下来给大家讲讲这三种字体的使用方法。
【Demo下载】 http://down.51cto.com/data/1863986
【3.x】 请移步:http://www.52php.cn/article/p-zgqiddzs-wx.html
【CCLabelTTF】 CCLabelTTF是最简单且使用最方便的字体类,可以使用.ttf格式的字体。其父类为CCSprite,所以也继承了CCSprite所有的操作,故也可以将其当做CCSprite来用。 CCLabelTTF每次调用 setString(即改变文字)的时候,一个新的OpenGL纹理将会被创建。这意味着setString和创建一个新的标签一样慢。所以,当你需要频繁的更新显示的文字内容的时候,尽可能不去使用该对象,而是使用CCLabelAtlas或者是CCLabelBMFont。
1、常用操作
2、代码举例
34
|
bool
HelloWorld::init()
if
(!CCLayer::init())
return
false
;
//获取可视区域尺寸大小
CCSizemysize=CCDirector::sharedDirector()->getVisibleSize();
//获取可视区域的原点位置
CCPointorigin=CCDirector::sharedDirector()->getVisibleOrigin();
//屏幕正中心位置
CCPointmidPos=ccp(mysize.width/2,mysize.height/2);
//创建CCLabelTTF的三种方法
CCLabelTTF*lb1=CCLabelTTF::create(
"aaaaaaaa"
,
"arial"
CCLabelTTF*lb2=CCLabelTTF::create(
"bbbbbbbb"
"宋体"
CCLabelTTF*lb3=CCLabelTTF::create(
"cccccc"
"黑体"
//设置位置,屏幕中心
lb1->setPosition(midPos);
lb2->setPosition(midPos);
lb3->setPosition(midPos);
//添加到HelloWorld层中
this
->addChild(lb1);
->addChild(lb2);
->addChild(lb3);
//其他操作
lb1->setColor(ccc3(255,0));
//设置颜色ccc3
lb1->setRotation(60.0f);
//旋转
lb2->setColor(cocos2d::ccBLUE);
//设置颜色ccBLUE
lb3->setString(
"helloworld!"
//设置文字内容
}
3、运行结果
4、分析与总结 (1)lb2由于设置了其尺寸大小为CCSizeMake(50,100),所以只显示了一部分的内容。 (2)lb3的对齐方式为右下角显示。 (3)CCLabelTTF的锚点为(0.5,0.5)。
【CCLabelAtlas】 CCLabelAtlas一般常用来显示数字信息,如分数、排名等。因为只是数字所以也犯不上使用CCLabelBMFont加载那么大的文字图像,所以使用这个比较合适。而资源一般来自一张.png图片,或.plist文件。不过它也可以用来显示其他字符,如英文字符。 当然CCLabelAtlas继承于CCNode类,故可以使用父类的一些函数,如:放缩、旋转等操作。 并且图片中每个字符的大小必须是固定的,若要改变字体大小,只能通过放缩来实现。 例如如下图数字图片资源:
1、常用操作
21
|
CC_DLLCCLabelAtlas:
CCAtlasNode,0)!important">* 创建CCLabelAtlas字体方法
//create(要显示的数字串,数字资源图片png,每个数字的宽,每个数字的高,图片第一个是什么数字)
//从图片中从左到右,一块一块截取。从数字startCharMap开始一一对应。
//第一块小图片对应数字startCharMap;第二块小图片对应数字startCharMap+1;第三块对应startCharMap+2……以此类推。
//注意:startCharMap为ASCII码,即数字'0'为48。
CCLabelAtlas*create(
*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);
/**
* 设置字符串内容
* 注意:内容的文字必须是资源图片中存在的才可以!!!
*/
*label);
);
};
//
|
2、代码举例
"20140815"
"fonts/digit.png"
'0'
);
4、分析与总结
(1)CCLabelAtlas使用的图片资源的每块字符的大小必须是固定的,不然会出错。
(2)CCLabelAtlas常常用来显示数字信息,如分数、排名等。但也可以用来显示英文字母。
(3)要改变字体大小,只能通过setScale进行放缩。
(4)锚点为(0,0)。
【CCLabelBMFont】
CCLabelBMFont文字是最快速最自由的字体类。
CCLabelBMFont的父类是CCSpriteBatchNode,特色就是以占用更多内存为代价加快标签的更新,这与其他任何CCSprite类相似。CCLabelBMFont相当于每次改变只改变了图片坐标,而CCLabelTTF要重新渲染。
这个类使用之前,需要添加好字体文件,包括一个图片文件(*.png)和一个字体坐标文件(*.fnt),这两个文件名称必须一样。可以下载一个fnt编辑工具来自定义字体。
值得注意的是:它的每个字母或符号都是单独的一个CCSprite精灵,可以使用getChildByTag(i)来获取第i个位置上的字符,来对每个字符单独设置属性、动作等。
这个类没办法指定字体的字号,但可以用Scale属性进行缩放来调整大小。
1、常用操作
CCSpriteBatchNode,monospace!important; font-weight:normal!important; font-style:normal!important; font-size:1em!important; min-height:inherit!important; color:black!important">CCLabelProtocol,monospace!important; font-weight:normal!important; font-style:normal!important; font-size:1em!important; min-height:inherit!important; color:black!important">CCRGBAProtocol
*str,monospace!important; font-weight:normal!important; font-style:normal!important; font-size:1em!important; min-height:inherit!important; color:black!important">*fntFile);
*fntFile);
*newString);
CCPoint&var);
width);
scaleX);
scaleY);
ccColor3B&color);
);
"hello"
"fonts/bitmapFontTest.fnt"
CCLabelBMFont*lb6=CCLabelBMFont::create(
"world"
);
//设置字体颜色为红色
"abc"
//设置内容
//获取第0个字母h
//获取第3个字母l
//放大
(1)CCLabelBMFont的每个字符都是一个单独的CCSprite精灵,可以对每个字符单独进行设置。
(2)CCLabelBMFont的使用功能是CCLabel中最丰富最灵活的一个。
(3)锚点为(0.5,0.5)。
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!