cocos2d 中添加显示文字的三种方式(CCLabelTTF 、CCLabelBMFont 和CCLabelAtlas)
来源:互联网 发布:尼康自带修图软件 编辑:程序博客网 时间:2024/04/29 12:16
最近在逛论坛的时候看到有的帖子说显示文本时用 CCLabelTTF 不是很好,且推荐游戏中最好别用。于是网上查了查相关资料,整理了下 ,顺便也分享下
在 cocos2d 中有三个类可以在层或精灵中添加文字:
- CCLabelTTF
- CCLabelBMFont
- CCLabelAtlas
CCLabelTTF
CCLabelTTF 每次调用 setString (即改变文字)的时候,一个新的OPENGL 纹理将会被创建.。这意味着setString 和创建一个新的标签一样慢。
所以,当你需要频繁的更新它们的时候,尽可能的不用去使用标签对象。 而应该使用CCLabelAtlas或者是CCLabelBMFont。
OK, 看下它的使用方法
CCLabelTTF *label = [CCLabelTTF labelWithString:@"the string" fontName:@"Marker Felt" fontSize:21];
[layer addChild:label];
label.position = ccp(100,100);
[label setString:@“change string”]; //修改文字的方法
这个类使用的是系统中的字体,不需要额外往项目文件中添加字体文件。但如果你有自定义的字体也可以加到项目中,如果无法使用,可以查看一下ccConfig.h中的CC_FONT_LABEL_SUPPORT是否enable了。
CCLabelBMFont
CCLabelBMFont 相当于每次改变只改变了图片坐标,而CCLabelTTF要重新渲染.这个类使用之前,需要添加好字体文件,包括一个图片文件 (**.png) 和一个 字体坐标文件 (**.fnt)。
在 cocos2d的示例项目中有现成的,可以先拿过来练习一下,找的时候注意两个文件的 名称是相同的,只是扩展名不同。
CCLabelBMFont *label =[CCLabelBMFont labelWithString:@"the string" fntFile:@"konqa32-hd.fnt"];
[layer addChild:label];
label.position = ccp(100,100);
[label setString:@“change string”];
fntFile是文件名,写扩展名是 .fnt的那个。下面是 .fnt文件的截图
可以看到 .fnt 文件定义了 图像文件的名称,以及每个字符对应的位置信息。
这个没办法指定字体的字号,但可以用 scale 属性进行缩放来调整大小。就当它是sprite。
CCLabelAtlas
如果你用cocos2d项目模板创建过项目,那么你已经看过它的效果了,就是左下角显示帧率的数字。
因为帧率一直在变,使用CCLabelTTF的话效率太低,因为只是数字所以也犯不上使用 CCLabelBMFont 加载那么大的文字图像,所以使用这个比较合适。
CCLabelAtlas *label = [CCLabelAtlas labelWithString:@"12" charMapFile:@"fps_images.png" itemWidth:12 itemHeight:18 startCharMap:'.'];
[layer addChild:label];
label.position = ccp(100,100);
[label setString:@“34”];
在项目文件中,在resourse group里你可以找一下一个叫 fps_images.png的这个图像文件,文件如下:
所以,这个只能显示上面这个12个字符,abcd什么的就不行了。
解释一下参数,
labelWithString就是字符,
charMapFile 就是字符的图像文件(这个只要图像文件就可以了),
itemWidth是每个字符的宽度,
itemHeight是每个字符的高度,这个不能设错,否则显示的时候可能就不对了。
最后一个是起始字符,它是使用这个其实字符来对应字符和图像关系的。
- cocos2d 中添加显示文字的三种方式(CCLabelTTF 、CCLabelBMFont 和CCLabelAtlas)比较
- cocos2d 中添加显示文字的三种方式(CCLabelTTF 、CCLabelBMFont 和CCLabelAtlas)
- cocos2d 中添加显示文字的三种方式(CCLabelTTF 、CCLabelBMFont 和CCLabelAtlas)
- cocos2d-x 中添加显示文字的三种方式(CCLabelTTF 、CCLabelBMFont 和CCLabelAtlas)
- cocos2d 中添加显示文字的三种方式(CCLabelTTF 、CCLabelBMFont 和CCLabelAtlas)
- cocos2d 中添加显示文字的三种方式(CCLabelTTF 、CCLabelBMFont 和CCLabelAtlas)
- cocos2d 中添加显示文字的三种方式(CCLabelTTF 、CCLabelBMFont 和CCLabelAtlas)
- cocos2d-x 中添加显示文字的三种方式(CCLabelTTF 、CCLabelBMFont 和CCLabelAtlas)
- cocos2d 中添加显示文字的三种方式(CCLabelTTF 、CCLabelBMFont 和CCLabelAtlas)
- cocos2d-x 中添加显示文字的三种方式(CCLabelTTF 、CCLabelBMFont 和CCLabelAtlas)
- 大话cocos2d中的文字显示(CCLabelTTF、CCLabelBMFont和CCLabelAtlas)
- cocos2d-x的三种label:CCLabelTTF,CCLabelAtlas,CClabelBMFont
- CCLabelTTF 、CCLabelBMFont 和CCLabelAtlas以及汉字中文的显示
- CCLabelTTF 、CCLabelBMFont 和CCLabelAtlas以及汉字中文的显示
- CCLabelTTF 、CCLabelBMFont 和CCLabelAtlas以及汉字中文的显示
- cocos2dx添加文本的三种方法及适用情况CCLabelTTF,CCLabelBMFont,CCLabelAtlas
- cocos2dx添加文本的三种方法及适用情况CCLabelTTF,CCLabelBMFont,CCLabelAtlas
- cocos2dx添加文本的三种方法及适用情况CCLabelTTF,CCLabelBMFont,CCLabelAtlas
- Managed MetaData in Sharepoint
- C++内存分配方式详解——堆、栈、自由存储区、全局/静态存储区和常量存储区
- APUE读书笔记-第17章-高级进程间通信
- ubuntu10.04安装和使用Cloud Foundry命令行工具vmc
- 自己的usaco代码---PROB Friday the Thirteenth
- cocos2d 中添加显示文字的三种方式(CCLabelTTF 、CCLabelBMFont 和CCLabelAtlas)
- 黑马程序员--JAVA基础复习之多线程(二)线程安全与解决方法
- linux源码安装和库文件的一些经验(二)--pkg-config
- HDOJ 2054
- vs2010连接mongodb服务器,X64位
- zoj 1456 Minimum Transport Cost
- [转]Tomcat内存溢出(java.lang.OutOfMemoryError: PermGen space)的解决办法 .
- datarow[]转换成datatable
- 页面传值?方式