支持HW团队,就支付宝领取下面的红包吧!(2018年3月31前,就几毛,也会几块,可以和其他红包叠加使用),你领取消费,HW有奖励。红包使用无条件限制,有条件请注意是不是有病毒。

小伙伴们,给大家发红包喽!人人可领,领完就能用。祝大家领取的红包金额大大大!#吱口令#长按复制此消息,打开支付宝就能领取!er1OEj73Uj

登入 注册 | 验证
| 搜索
HelloWorld论坛 : > 计算机科学、技术、教学> 编程专题> cocos2d-x> [转][cocos2d-x] --- CCLabelProtocol文本标签详解
 
 
 
 
类别:Cocos2dx教程 阅读:2406 评论:0 时间:一月 18, 2017, 11:49 p.m. 关键字:cocos2d-x

 

 来源:http://blog.csdn.net/qiurisuixiang/article/details/8774634

1 CCLabelProtocol是文本标签的父类,CCLabelProtocol有三个直接子类,都是cocos2d-x中用来创建文本标签的,下面是类结构图

 

CCLabelTTF不仅是CCLabelProtocol的子类,其实也是CCSprite的子类,CCLabelTTF是用来渲染文本标签的,可以指定字体,每次设置字符串内容时,都需要重新创建纹理和渲染,性能不好(可以查看相关的源代码),所以通常情况下使用CCLabelAtlas或者CCLabelBMFont代替。

 

CCLabelAtlas不仅是CCLabelProtocol的子类,其实也是CCAtlasNode的子类,CCAtlasNode封装了一个CCTextureAtlas的变量,CCTextureAtlas初始化图片文件的时候会把图片加载到缓存(CCTextureCache)中。CCLabelAtlas的绘制效率高,但是限制性太多,没有CCLabelBMFont灵活。

 

CCLabelBMFont不仅是CCLabelProtocol的子类,其实也是CCSpriteBatchNode的子类,创建CCLabelBMFont对象需要一个字符串和一个fnt格式的文件(字库)

CCLabelBMFont *label= CCLabelBMFont::labelWithString("Bitmap Font Atlas", "fonts/bitmapFontTest.fnt");

 

5这个bitmapFontTest.fnt文件包含了这些信息:对应图片的名字(图片包含了所有你要绘制的字符)、图片中的

字符对应的unicode编码、字符在图片中的坐标、宽高等。初始化CCLabelBMFont对象时,会把图片添加到缓存(CCTextureCache)中,解析fnt文件,把fnt文件中对应的信息保存到一个ccBMFontDef类型的数组里面,数组的索引是charId(字符的unicode编码值)。绘制字符串时,根据字符对应的unicode码去查找ccBMFontDef信息,从缓存中取出图片,再根据ccBMFontDef中坐标、宽高取出对应区域的字符图片,把字符在字符串中的索引位置作为tag添加到CCLabelBMFont中,因为CCLabelBMFont本身是CCSpriteBatchNode,这样就实现了批处理渲染精灵,提高了性能。

[挂载人]初学MPEG

个人签名--------------------------------------------------------------------------------

Please Login (or Sign Up) to leave a comment