cocos2d 中加入显示文字的三种方式(CCLabelTTF 、CCLabelBMFont 和CCLabelAtlas)

本文详细介绍了Cocos2d中三种文字显示方式:CCLabelTTF、CCLabelBMFont 和 CCLabelAtlas 的使用方法及注意事项。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是每一个字符的高度,这个不能设错,否则显示的时候可能就不正确了。

       最后一个是起始字符,它是使用这个事实上字符来相应字符和图像关系的。

转载于:https://www.cnblogs.com/mfrbuaa/p/3782558.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值