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

在 cocos2d 中有三个类可以在层或精灵中添加文字:

  • CCLabelTTF
  • CCLabelBMFont
  • CCLabelAtlas

CCLabelTTF

CCLabelTTF <wbr>每次调用 setString (即改变文字)的时候,一个新的OPENGL纹理将会被创建.。这意味着setString 和创建一个新的标签一样慢。所以,<span style="color:red">当你需要频繁的更新它们的时候,尽可能的不用去使用标签对象。 <wbr>而应该使用CCLabelAtlas或者是CCLabelBMFont。</wbr></span>OK, 看下它的使用方法 </wbr>

<wbr></wbr>

CCLabelTTF *label = <wbr>CCLabelTTF::labelWithString("hello world", CCSizeMake(100, 25), (CCTextAlignment)intAlign, strFontName, fontSize);</wbr>

label->setAnchorPoint(ccp(0, 0));

label->setPosition = ccp(100,100);

这个类使用的是系统中的字体,不需要额外往项目文件中添加字体文件。但如果你有自定义的字体也可以加到项目中,如果无法使用,可以查看一下ccConfig.h中的CC_FONT_LABEL_SUPPORT是否enable了。 <wbr><wbr></wbr></wbr>

<wbr></wbr>

CCLabelBMFont

CCLabelBMFont <wbr></wbr>相当于每次改变只改变了图片坐标,而CCLabelTTF要重新渲染.这个类使用之前,需要添加好字体文件,包括一个图片文件 (**.png) 和一个字体坐标文件(**.fnt)。使用方法:

<wbr></wbr>

假设字体文件为:fonts/bmFont.fnt

<wbr></wbr>

CCLabelBMFont *label CCLabelBMFont::labelWithString("hello world", "fonts/bmFont.fnt");

layer->addChild(label);

label->setAncherPoint(ccp(0, 0));

label->setPosition(ccp(100,100));

label->setString(" "); <wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr></wbr></wbr>

这个没办法指定字体的字号,但可以用 scale 属性进行缩放来调整大小。就当它是sprite。

<wbr></wbr>

CCLabelAtlas <wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

如果你用cocos2d项目模板创建过项目,那么你已经看过它的效果了,就是左下角显示帧率的数字。因为帧率一直在变,使用CCLabelTTF的话效率太低,因为只是数字所以也犯不上使用CCLabelBMFont 加载那么大的文字图像,所以使用这个比较合适。

<wbr></wbr>

CCLabelAtlas *label = CCLabelAtlas::labelWithString(labelWithString, charMapFile, itemWidth, itemHeight, startChar); <wbr></wbr>

<wbr></wbr>

这个只能显示图像上面的字符。

解释一下参数,

<wbr><wbr><wbr><wbr><wbr><wbr>labelWithString就是字符,</wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr>charMapFile 就是字符的图像文件(这个只要图像文件就可以了),</wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr>itemWidth是每个字符的宽度,</wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr>itemHeight是每个字符的高度,这个不能设错,否则显示的时候可能就不对了。</wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr>最后一个是起始字符,它是使用这个其实字符来对应字符和图像关系的。</wbr></wbr></wbr></wbr></wbr></wbr>

cocos2d-x学习之添加显示文字相关推荐

  1. python文字游戏 生成数字菜单_pygame游戏之旅 游戏中添加显示文字

    本文为大家分享了pygame游戏之旅的第5篇,供大家参考,具体内容如下 在游戏中添加显示文字: 这里自己定义一个crash函数接口: def crash(): message_diaplay('You ...

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

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

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

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

  4. PyQt5随笔:QTextEdit、QTextBrowser添加的文字超出视图后,滑动条自动移至最底部,显示最新文本解决

    PyQt5随笔:QTextEdit.QTextBrowser添加的文字超出视图后,滑动条自动移至最底部,显示最新文本解决 1.前言 QTextEdit/QTextBrowser设置文本的简单函数:se ...

  5. Python绘图之matplotlib基础教程:matplotlib库图表绘制中常规设置大全(交互模式、清除原有图像、设置横坐标显示文字/旋转角度、添加图例、绘图布局自动调整、图像显示、图像暂停)

    Python绘图之matplotlib基础教程:matplotlib库图表绘制中常规设置大全(交互模式.清除原有图像.设置横坐标显示文字/旋转角度.添加图例.绘图布局自动调整.图像显示.图像暂停) 目 ...

  6. 百度地图添加文本标注显示文字

    一.业务场景 通过百度地图API的 label 添加文本覆盖物,用于显示 marker点位的描述信息.并控制 label 的显示,鼠标移入点位的时候显示文字,不移入点位的时候不显示文字.去掉背景颜色框 ...

  7. CSS学习笔记:以图片作背景显示文字

    hello,大家好,我是wangzirui32,今天我们来学习如何以图片作背景显示文字. 开始学习吧! 先来看看效果: 是不是特别好看,其HTML代码如下: <!DOCTYPE html> ...

  8. DX9显示文字-------VB6编程学习DX9游戏编程DirectX9编程2D小游戏源码冷风引擎CoolWind2D游戏引擎(14)

    DX9显示文字 创建Form1,输入以下源码: Private Sub Form_Load()'新手注意:游戏编程中, '通常将窗体的 BorderStyle 设置为"Fixed singl ...

  9. opengl学习之显示文字

    本课我们来谈谈如何显示文字. OpenGL并没有直接提供显示文字的功能,并且,OpenGL也没有自带专门的字库.因此,要显示文字,就必须依赖操作系统所提供的功能了. 各种流行的图形操作系统,例如Win ...

最新文章

  1. centos装oracle6,CentOS-6.7下安装Oracle11g
  2. 这个云代驾,你打几分
  3. 如何利用报表工具FineReport实现报表列的动态展示
  4. H3 BPM MVC表单SheetOffice控件使用分享
  5. excel有必要用python_为什么Python比VBA更适合自动化处理Excel数据?
  6. gerber文件怎么导贴片坐标_SMT贴片机在线编程调试
  7. PHP 读取JSON数据
  8. Google人工智能面试·真·题(附参考答案+攻略)
  9. Access(JET-SQL)问题集锦
  10. 【原创】软件测试基础流程
  11. 算法:同构字符串205. Isomorphic Strings
  12. 如何从网页上下载页面嵌入的PDF文件
  13. 10万+标注数据开放!驾驶员不良驾驶识别/电动车进电梯检测/渣土车车牌识别/反光衣识别等8大赛题详解来了!...
  14. 线程停止(stop/intrrupt)
  15. 游戏开发设计模式:单例模式
  16. 大数据常见错误及解决方案
  17. 打开excel提示损坏的映像的解决办法
  18. 牛客网Java选择题练习
  19. 大恒水星相机+opencv4.0.1保存视频
  20. Linux 时间、时区设置

热门文章

  1. 华为机试HJ26:字符串排序
  2. 华为机试HJ23:删除字符串中出现次数最少的字符
  3. 一维稳态导热的数值计算c语言,传热传质上机实习题(参考资料C语言)
  4. vue 多个api请求_Vue+Django REST framework实战3.RESTful API和VUE目录结构
  5. wpf使用入式mysql_c#之wpf:从mysql数据库中数据绑定到页面上
  6. ubuntu16.04安装pycharm,并设置快捷启动方式
  7. 面试高级测试工程师修炼之接口测试平台开发
  8. mysql查询结果做表_MySQL将一个表的查询结果作为本表的查询条件更新数据
  9. ffmpeg拉流设置暂停_ffmpeg+SDL2实现的视频播放器「退出、暂停、播放」
  10. void* 与 shared_ptr的相互转换