在 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)的更多相关文章

  1. cocos2d-x 中添加显示文字的三种方式 LabelTTF 、LabelBMFont 和 LabelAtlas

    在 cocos2d-x 中有三个类可以在层或精灵中添加文字: LabelTTF LabelBMFont LabelAtlas LabelTTF 直接支持使用 TTF 字库,可以支持全部的中文,但是效率 ...

  2. cocos中添加显示文字的三种方式(CCLabelTTF 、CCLabelBMFont 和CCLabelAtlas)

    CCLabelTTF CCLabelTTF 每次调用 setString (即改变文字)的时候,一个新的OPENGL 纹理将会被创建..这意味着setString 和创建一个新的标签一样慢. 这个类使 ...

  3. 在Tomcat中部署web项目的三种方式

    搬瓦工搭建SS教程 SSR免费节点:http://www.xiaokeli.me 在这里介绍在Tomcat中部署web项目的三种方式: 1.部署解包的webapp目录 2.打包的war文件 3.Man ...

  4. Tomcat中部署web应用的三种方式

    Tomcat中部署web应用的三种方式(静态部署)       第一种,针对war或解压后的war,最为常用的是直接操作webapp目录,将完整的war包或者web应用直接放到webapp目录下.使用 ...

  5. spring中创建bean对象的三种方式以及作用范围

    时间:2020/02/02 一.在spring的xml配置文件中创建bean对象的三种方式: 1.使用默认构造函数创建.在spring的配置文件中使用bean标签,配以id和class属性之后,且没有 ...

  6. Java中 实现多线程成的三种方式(继承,实现,匿名内部类)

    ---------------------------------------------------------------------------------------------------- ...

  7. Linux中设置服务自启动的三种方式

    有时候我们需要Linux系统在开机的时候自动加载某些脚本或系统服务 主要用三种方式进行这一操作: ln -s                       在/etc/rc.d/rc*.d目录中建立/e ...

  8. [转]Linux中设置服务自启动的三种方式

    from:http://www.cnblogs.com/nerxious/archive/2013/01/18/2866548.html 有时候我们需要Linux系统在开机的时候自动加载某些脚本或系统 ...

  9. Linux中设置服务自启动的三种方式,ln -s 建立启动软连接

    有时候我们需要Linux系统在开机的时候自动加载某些脚本或系统服务(http://www.0830120.com) 主要用三种方式进行这一操作: ln -s 在/etc/rc.d/rc*.d目录中建立 ...

随机推荐

  1. PL/SQL Developer使用技巧

    1.PL/SQL Developer记住登陆密码 在使用PL/SQL Developer时,为了工作方便希望PL/SQL Developer记住登录Oracle的用户名和密码: 设置方法:PL/SQL ...

  2. Android开发之自定义组合控件

    自定义组合控件的步骤1.自定义一个View,继承ViewGroup,比如RelativeLayout2.编写组合控件的布局文件,在自定义的view中加载(使用View.inflate())3.自定义属 ...

  3. Java面试题-线程安全

    1. 什么叫线程安全?servlet是线程安全吗?       答:如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码.如果每次运行结果和单线程运行的结果是一样的,而且其他 ...

  4. Can't obtain the input stream from /docProps/app.xml

    今天在做poi修改样式时,报了以下错误: Exception in thread "main" org.apache.poi.POIXMLException: java.io.IO ...

  5. Innodb物理存储结构系列1

    本篇先介绍 下Innodb表空间,文件相关的内存数据结构. 1. 数据结构 Innodb的tablespace和文件的关系,是一对多的关系,先来看三个结构体 1. fil_system_struct: ...

  6. OK335xS LAN8710 phy driver hacking

    /******************************************************************** * OK335xS LAN8710 phy driver h ...

  7. Android学习系列(28)--App集成支付宝[已过期]

    手机的在线支付,被认为是2012年最看好的功能,我个人认为这也是移动互联网较传统互联网将会大放光彩的一个功能.人人有手机,人人携带手机,花钱买东西,不再需要取钱付现,不再需要回家上网银,想买什么,扫描 ...

  8. CF GYM 100703B Energy Saving

    题意:王子每月买m个灯泡给n个房间换灯泡,如果当前有的灯泡数够列表的第一个房间换的就全换,直到灯泡不够为止,给出q个查询,查询x月已经换好几个房子,手里还剩多少灯泡. 解法:水题……小模拟. 代码: ...

  9. 在windows10+word2010中完美使用北大方正word公式输入法总结

    如果在安装输入法时遇到了无法安装的情况,请首先百度下VC运行库安装下(32位64位都安就是),然后安装北大方正word公式输入法,此时不会再提示无法安装,接着(关键)在word应用程序图标右键-> ...

  10. [Irving]SqlServer 标量函数 详解【转】

    --创建用户定义函数.这是一个已保存 Transact-SQL 或公共语言运行时 (CLR) 例程,--该例程可返回一个值.用户定义函数不能用于执行修改数据库状态的操作.--与系统函数一样,用户定义函 ...