探cocos2dx文本显示实现(label_nodes),源码版本(2.2.3)
来源:互联网 发布:python 除法符号 编辑:程序博客网 时间:2024/05/22 02:02
追本溯源的话,一个文本的显示在计算上也就是点阵图,而一行文本也就是一系列点阵图按照顺序排序显示而成的。早期的计算机图形实现的图案可以说都是一个个几何形状组合而成,到了近代计算机图形技术的发展,加入了纹理技术,使得图形可以表现得越来越丰富。比如说类似于计算机上各种各样的字体,使用几何图形组合的方案已经很难达到丰富的效果了。在cocos2dx里边,文本显示的实现也是基于纹理技术的,当然出于性能上的考量,文本显示的字的纹理图都会被放到一张大图里边,以此来减少opengl对2指数宽高图片需求带来的性能开销。当cocos2dx的文本显示类获取需要显示的字符串之后,会根据具体的字符字母调整映射纹理坐标和绘制矩形坐标,最终会显示到屏幕上。
模块相关类:
CCLabelAtlas:不基于具体的字体文件的文本显示类,使用图片的方式保存需要显示的字体,解析字符串的时候会通过索引进行解析,比如说第一个字符是'1',那么就会自动解析第二个字符为'2'。
CCLabelBMFont:基于fnt字体文件的显示类,需要提供fnt字体文件,使用CCSpriteBatchNode渲染(fnt字体文件可以使用BMFont软件生成)。
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);
模块相关类:
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,可以实现比较灵活、具有丰富效果的字体,修改在解析字符串生成纹理的代码就完全可以实现了。
0 0
- 探cocos2dx文本显示实现(label_nodes),源码版本(2.2.3)
- 探cocos2dx特效实现(effects),源码版本(2.2.3)
- 探cocos2dx纹理模块(textures),源码版本(2.2.3)
- 探cocos2dx裁剪结点、拖尾效果、进度效果、渲染纹理实现(misc_nodes),源码版本(2.2.3)
- 探cocos2dx对游戏精灵(sprite_nodes)的实现。(源码版本2.2.3)
- 探cocos2dx UI引擎(粗略阅读)(源码版本2.2.3)
- 探cocos2dx粒子特效模块(particle_nodes),源码版本(2.2.3)
- 探cocos2dx各类输入touch、keypad、IME,源码版本(2.2.3)
- cocos2dx 文本分行显示
- cocos2dx启动流程分析(源码版本:cocos2d-x-2.2.3)
- cocos2dx源码:popup实现
- cocos2dx遇到的问题 2.2.3版本
- 最近开发遇到的cocos2dx问题集(版本2.2.3,studio版本1.6.0.0)
- cocos2dx-js 实现自定义富文本
- Java实现的比较两个不同的文本,在文本面板中显示不同文本的内容(完整源码)
- [Quick-x]cocos2dx下的彩色文本显示--RichLabel
- Quick-x cocos2dx下的彩色文本显示--RichLabel
- cocos2dx 文本label显示方法LabelBMFont,LabelAtlas,MenuItemFont
- Git 版本合并策略
- zoj3805 Machine DP
- Hibernate学习之get和load区别
- 你能说出SQL聚集索引和非聚集索引的区别吗(未知日期)
- 深入理解java虚拟机(十) Java 虚拟机运行时栈帧结构
- 探cocos2dx文本显示实现(label_nodes),源码版本(2.2.3)
- Codeforces 461B
- @protocol
- 解决apt-get install blktrace时,出现source 404 not found的问题
- Javascript之document对象详解
- windows下unicode编码
- l6218E: undefined symbol
- IO流总结
- LeetCode: Reorder List