cocos2d 中加入显示文字的三种方式(CCLabelTTF 、CCLabelBMFont 和CCLabelAtlas)
在 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-x 中添加显示文字的三种方式 LabelTTF 、LabelBMFont 和 LabelAtlas
在 cocos2d-x 中有三个类可以在层或精灵中添加文字: LabelTTF LabelBMFont LabelAtlas LabelTTF 直接支持使用 TTF 字库,可以支持全部的中文,但是效率 ...
- cocos中添加显示文字的三种方式(CCLabelTTF 、CCLabelBMFont 和CCLabelAtlas)
CCLabelTTF CCLabelTTF 每次调用 setString (即改变文字)的时候,一个新的OPENGL 纹理将会被创建..这意味着setString 和创建一个新的标签一样慢. 这个类使 ...
- 在Tomcat中部署web项目的三种方式
搬瓦工搭建SS教程 SSR免费节点:http://www.xiaokeli.me 在这里介绍在Tomcat中部署web项目的三种方式: 1.部署解包的webapp目录 2.打包的war文件 3.Man ...
- Tomcat中部署web应用的三种方式
Tomcat中部署web应用的三种方式(静态部署) 第一种,针对war或解压后的war,最为常用的是直接操作webapp目录,将完整的war包或者web应用直接放到webapp目录下.使用 ...
- spring中创建bean对象的三种方式以及作用范围
时间:2020/02/02 一.在spring的xml配置文件中创建bean对象的三种方式: 1.使用默认构造函数创建.在spring的配置文件中使用bean标签,配以id和class属性之后,且没有 ...
- Java中 实现多线程成的三种方式(继承,实现,匿名内部类)
---------------------------------------------------------------------------------------------------- ...
- Linux中设置服务自启动的三种方式
有时候我们需要Linux系统在开机的时候自动加载某些脚本或系统服务 主要用三种方式进行这一操作: ln -s 在/etc/rc.d/rc*.d目录中建立/e ...
- [转]Linux中设置服务自启动的三种方式
from:http://www.cnblogs.com/nerxious/archive/2013/01/18/2866548.html 有时候我们需要Linux系统在开机的时候自动加载某些脚本或系统 ...
- Linux中设置服务自启动的三种方式,ln -s 建立启动软连接
有时候我们需要Linux系统在开机的时候自动加载某些脚本或系统服务(http://www.0830120.com) 主要用三种方式进行这一操作: ln -s 在/etc/rc.d/rc*.d目录中建立 ...
随机推荐
- nodejs创建express+ejs项目
很多同学跟着 node.js开发指南 学习用 express+ejs 创建项目的时候,却总是无法成功,如: 运行 以下命令去创建 express+ejs 创建项目 $ express -t ejs m ...
- 第二部分 MediaPlayer的接口与架构
第二部分 MediaPlayer的接口与架构 2.1 整体框架图 MediaPlayer的各个库之间的结构比较复杂,可以用下图的表示 在各个库中,libmedia.so位于核心 ...
- The only legal comparisons are between two numbers, two strings, or two dates.
The only legal comparisons are between two numbers, two strings, or two dates. Left hand operand is ...
- 【App FrameWork】页面之间的参数传递
若应用中有多个页面,这时2个页面之间可能需要进行参数传递.那么如何来实现呢? 首先想到的就是URL参数传递的方式,如:在panel里设置属性 data-defer="Pages/Shake. ...
- HNOI2008Cards
看了一下polya和burnside定理,感觉还行(就是不会证……) 这题用的是burnside ans=在每个置换群下不动的方案数之和除以置换数 这题有个难点在取模 关于对p(p为素数)取模(涉及到 ...
- apache开源项目--HBase
HBase – Hadoop Database,是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群. HBase是Goog ...
- oracle11g dataguard部署指南
一.Oracle11DB+DG配置 1. 单机环境介绍(PRIMARY DATABASE) 主库 primary public ip 192.168.0.252 ...
- memcache redundancy机制分析及思考
设计和开发可以掌控客户端的分布式服务端程序是件幸事,可以把很多事情交给客户端来做,而且可以做的很优雅.角色决定命运,在互联网架构中,web server必须冲锋在前,注定要在多浏览器版本以及协议兼容性 ...
- android布局ui
LinearLayout和RelativeLayout 属性对比 共有属性:java代码中通过btn1关联次控件android:id=”@+id/btn1″ 控件宽度android:layout_wi ...
- jenkins+ant+ssh远程部署服务glassfish
jenkins安装可以参考官网或自己百度,这里不再说明: jenkins版本2.19.2 这里先说一下目的:主要是通过jenkins实现glassfish的部署,源码使用的是svn,编译是使用ant, ...