Cocos2d-x中CCLabel字体类

来源:互联网 发布:图解网络硬件 kindle 编辑:程序博客网 时间:2024/04/30 22:24

cocos2d-x提供了三种文字字体的显示:CCLabelTTF、CCLabelAtlas、CCLabelBMFont

1.CCLabelTTF类继承自CCSprite类,因此它就是一个sprite,可以使用.ttf格式的字体。每次调用 setString(即改变文字)的时候,一个新的OpenGL纹理将会被创建。这意味着setString和创建一个新的标签一样慢。所以,当你需要频繁的更新显示的文字内容的时候,尽可能不去使用该对象,而是使用CCLabelAtlas或者是CCLabelBMFont。

2.CCLabelAtlas一般常用来显示数字信息,继承于CCNode类,故可以使用父类的一些函数,如:放缩、旋转等操作。资源一般来自一张.png图片,或.plist文件。图片中每个字符的大小必须是固定的,若要改变字体大小,只能通过放缩来实现。
3.CCLabelBMFont文字是最快速最自由的字体类。CCLabelBMFont的父类是CCSpriteBatchNode,特色就是以占用更多内存为代价加快标签的更新,这与其他任何CCSprite类相似。CCLabelBMFont相当于每次改变只改变了图片坐标,而CCLabelTTF要重新渲染。这个类使用之前,需要添加好字体文件,包括一个图片文件(*.png)和一个字体坐标文件(*.fnt),这两个文件名称必须一样。可以下载一个fnt编辑工具来自定义字体。
值得注意的是:它的每个字母或符号都是单独的一个CCSprite精灵,可以使用getChildByTag(i)来获取第i个位置上的字符,来对每个字符单独设置属性、动作等。这个类没办法指定字体的字号,但可以用Scale属性进行缩放来调整大小。

     //创建CCLabelTTF的三种方法        CCLabelTTF* lb1 = CCLabelTTF::create("aaaaaaaa", "arial", 20);        CCLabelTTF* lb2 = CCLabelTTF::create("bbbbbbbb", "宋体", 40);        CCLabelTTF* lb3 = CCLabelTTF::create("cccccc", "黑体", 40);    //其他操作        lb1->setColor( ccc3(255, 0, 0) ); //设置颜色ccc3        lb1->setRotation(60.0f);          //旋转        lb2->setColor( cocos2d::ccBLUE ); //设置颜色ccBLUE        lb3->setString("hello world!");   //设置文字内容
//要显示的字符,存放数字图片的png,数字宽,高,第一张图片代表的数字(后面每一张图片在此基础上加1)
CCLabelAtlas *lb4 = CCLabelAtlas::create("65213","test.png",20,20,'0');

//create(要显示的字符串,字体资源名称.fnt)      //创建两个CCLabelBMFont字体  //获取某个位置的字母,像精灵一样使用        CCLabelBMFont* lb5 = CCLabelBMFont::create("hello", "fonts/bitmapFontTest.fnt");        CCLabelBMFont* lb6 = CCLabelBMFont::create("world", "fonts/bitmapFontTest.fnt");
CCSprite* c1 = (CCSprite*)lb5->getChildByTag(0); //获取第0个字母h        CCSprite* c2 = (CCSprite*)lb5->getChildByTag(3); //获取第3个字母l        c1->setColor(ccc3(0,255,0));                     //设置为绿色        c2->setScale(2.0f);                              //放大

0 0
原创粉丝点击