探cocos2dx文本显示实现(label_nodes),源码版本(2.2.3)
2014-08-29 15:59
253 查看
追本溯源的话,一个文本的显示在计算上也就是点阵图,而一行文本也就是一系列点阵图按照顺序排序显示而成的。早期的计算机图形实现的图案可以说都是一个个几何形状组合而成,到了近代计算机图形技术的发展,加入了纹理技术,使得图形可以表现得越来越丰富。比如说类似于计算机上各种各样的字体,使用几何图形组合的方案已经很难达到丰富的效果了。在cocos2dx里边,文本显示的实现也是基于纹理技术的,当然出于性能上的考量,文本显示的字的纹理图都会被放到一张大图里边,以此来减少opengl对2指数宽高图片需求带来的性能开销。当cocos2dx的文本显示类获取需要显示的字符串之后,会根据具体的字符字母调整映射纹理坐标和绘制矩形坐标,最终会显示到屏幕上。
模块相关类:
CCLabelAtlas:不基于具体的字体文件的文本显示类,使用图片的方式保存需要显示的字体,解析字符串的时候会通过索引进行解析,比如说第一个字符是'1',那么就会自动解析第二个字符为'2'。
CCLabelBMFont:基于fnt字体文件的显示类,需要提供fnt字体文件,使用CCSpriteBatchNode渲染(fnt字体文件可以使用BMFont软件生成)。
CCLabelTTF:基于TTF字体文件的显示类,使用具体平台的api将文本绘制成一个位图,然后在根据这个位图生成一个纹理,限制可能比较高,跨平台不好。
uml图:
使用方式:
CCLabelAtlas *tempAtlasNode = CCLabelAtlas::create("hello label","fontFileName.ttf");
addChild(tempAtlasNode);
CCLabelBMFont *tempBMFontNode = CCLabelBMFont::create("hello label","fontFileName.fnt");
addChild(tempBMFontNode);
CCLabelTTF *tempTTFNode = CCLabelTTF::create("hello label","Arial",32);
addChild(tempTTFNode);
扩展:
适合扩展的类还是CCLabelBMFont,可以实现比较灵活、具有丰富效果的字体,修改在解析字符串生成纹理的代码就完全可以实现了。
模块相关类:
CCLabelAtlas:不基于具体的字体文件的文本显示类,使用图片的方式保存需要显示的字体,解析字符串的时候会通过索引进行解析,比如说第一个字符是'1',那么就会自动解析第二个字符为'2'。
CCLabelBMFont:基于fnt字体文件的显示类,需要提供fnt字体文件,使用CCSpriteBatchNode渲染(fnt字体文件可以使用BMFont软件生成)。
CCLabelTTF:基于TTF字体文件的显示类,使用具体平台的api将文本绘制成一个位图,然后在根据这个位图生成一个纹理,限制可能比较高,跨平台不好。
uml图:
使用方式:
CCLabelAtlas *tempAtlasNode = CCLabelAtlas::create("hello label","fontFileName.ttf");
addChild(tempAtlasNode);
CCLabelBMFont *tempBMFontNode = CCLabelBMFont::create("hello label","fontFileName.fnt");
addChild(tempBMFontNode);
CCLabelTTF *tempTTFNode = CCLabelTTF::create("hello label","Arial",32);
addChild(tempTTFNode);
扩展:
适合扩展的类还是CCLabelBMFont,可以实现比较灵活、具有丰富效果的字体,修改在解析字符串生成纹理的代码就完全可以实现了。
相关文章推荐
- 探cocos2dx对游戏精灵(sprite_nodes)的实现。(源码版本2.2.3)
- 探cocos2dx裁剪结点、拖尾效果、进度效果、渲染纹理实现(misc_nodes),源码版本(2.2.3)
- 探cocos2dx粒子特效模块(particle_nodes),源码版本(2.2.3)
- 探cocos2dx特效实现(effects),源码版本(2.2.3)
- cocos2dx启动流程分析(源码版本:cocos2d-x-2.2.3)
- 探cocos2dx各类输入touch、keypad、IME,源码版本(2.2.3)
- 实现Label文本内容中电话号码特殊颜色显示并点击电话号码能拨打
- iOS label显示HTML(富文本)代码 (解析)并实现高度自适应
- cocos2dx中CCLabelTTF多行文本显示崩溃问题
- 第二人生的源码分析(九十四)LLTextBox类实现文本显示
- cocos2dx 文本label显示方法LabelBMFont,LabelAtlas,MenuItemFont
- Java实现的比较两个不同的文本,在文本面板中显示不同文本的内容(完整源码)
- 探cocos2dx UI引擎(粗略阅读)(源码版本2.2.3)
- 探cocos2dx纹理模块(textures),源码版本(2.2.3)
- 第二人生的源码分析(九十四)LLTextBox类实现文本显示
- 第二人生的源码分析(九十四)LLTextBox类实现文本显示
- 实现Label文本内容中电话号码特殊颜色显示并点击电话号码能拨打
- 第二人生的源码分析(11)地面显示的实现
- 第二人生的源码分析(12)天空显示的实现
- (源码实例)通过层DIV实现,当鼠标放在链接上面,显示图片及文字