`
浮生长恨
  • 浏览: 213707 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

阅读更多

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

原地址

http://www.cnblogs.com/xuling/archive/2012/02/29/2372721.html

最近在逛论坛的时候看到有的帖子说显示文本时用 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-x 滚动文字(CCLabelTTF)

    在cocos2d-x游戏开发框架中,滚动文字(CCLabelTTF)是常见的文本动画效果,用于展示动态更新或循环播放的文本信息。本文将深入探讨如何利用`labelWithString`和`setTextureRect`方法来实现文字滚动,并解决可能遇到...

    cocos2d-x中文显示

    2. **文本节点**:在cocos2d-x中,我们通常使用`CCLabelTTF`或`CCLabelBMFont`来显示文本。对于中文,建议使用`CCLabelTTF`,因为它对Unicode字符支持更好。创建`CCLabelTTF`时,需指定字体名称、大小、对齐方式等...

    cocos2d-x 显示中文

    在cocos2d-x开发过程中,遇到中文显示问题是很常见的挑战。Cocos2d-x是一个用C++编写的开源游戏引擎,广泛应用于跨平台游戏开发。由于编码和字体集的处理方式,有时可能会出现中文字符无法正确显示的情况。本文将...

    cocos2d-x 3.X 接收图片 base64 转码显示

    在cocos2d-x 3.x版本中,处理网络接收的Base64编码的图片数据并将其显示在精灵(Sprite)上是一项常见的任务。这通常涉及到网络请求、数据解码以及图像渲染等多个步骤。以下是详细的知识点说明: 1. **Base64编码**:...

    cocos2d-x API中文文档

    在Cocos2d-x的家族中,还有其他分支引擎,如Cocos2d-iPhone、Cocos2d-python、Cocos2d-xna等,它们各自支持不同的平台和编程语言,满足不同开发者的需求。例如,Cocos2d-iPhone专注于iOS平台,使用Objective-C或...

    Cocos2d-x实战:JS卷——Cocos2d-JS开发

    资源名称:Cocos2d-x实战:JS卷——Cocos2d-JS开发内容简介:本书是介绍Cocos2d-x游戏编程和开发技术书籍,介绍了使用Cocos2d-JS中核心类、瓦片地图、物理引擎、音乐音效、数据持久化、网络通信、性能优化、多平台...

    cocos2d-x的自定义字体之CCLabelBMFont

    本知识点将详细讲解如何在Cocos2d-x中实现自定义字体,特别是利用CCLabelBMFont类来创建位图字体(Bitmap Font)。 一、位图字体(Bitmap Font) 位图字体是一种将每个字符转化为图像像素的字体格式,常用于游戏...

    cocos2d3D扑克翻牌特效

    在cocos2d中,可以使用Sprite3D类来加载和显示3D模型。 三、OpenGL基础 OpenGL是一种跨语言、跨平台的编程接口,用于渲染2D和3D图形。在cocos2d-lua中,我们可以通过OpenGL ES来处理图形渲染。要实现翻牌特效,需要...

    cocos2d-x二维码控件

    总的来说,结合libqrencode和Cocos2d-x的DrawNode,我们可以创建一个功能完善的二维码控件,不仅能够生成和显示二维码,还能根据项目需求进行定制和优化。这种控件在游戏、应用或任何需要分享信息的场景中都非常实用...

    cocos2d-x-cocos2d-x-2.2.2.zip

    这个压缩包“cocos2d-x-cocos2d-x-2.2.2.zip”包含了cocos2d-x 的2.2.2版本,该版本是cocos2d-x发展中的一个重要里程碑,它提供了许多改进和优化,使得开发者能够更加高效地创建2D游戏和应用。 在cocos2d-x 2.2.2中...

    cocos2d-x json字符串与cocos2d::Value转换工具

    该资源主要用于cocos2d-x中Value与json字符串的相互转换,提供从json文件读取为cocos2d::Value,cocos2d::Value写入到文件,cocos2d::Value转换为json字符串,json字符串转换为cocos2d::Value。json字符串转换成cocos...

    cocos2d-x 显示中文字符 实例源码

    在使用Cocos2d-x进行游戏开发时,有时我们需要在游戏中显示中文字符,以适应不同语言环境的用户需求。本实例源码着重解决的就是如何在Cocos2d-x中正确显示中文字符的问题。 首先,我们要理解为什么在Cocos2d-x中...

    Cocos2d-x 三消游戏源码

    本源码分享是基于Cocos2d-x 3.8版本实现的一个三消游戏,三消游戏,又称消消乐,是一种常见的休闲益智游戏类型,玩家通过交换相邻的元素来达成三个或以上相同元素的连通消除。 在Cocos2d-x中开发游戏,主要涉及以下...

    国外的cocos2d教学翻译。第三弹:第11节到第13节。

    这三部分内容覆盖了cocos2d中关键的技术点,对于想要提升游戏开发技能或正在着手cocos2d项目的开发者来说,是非常宝贵的学习资料。通过学习和实践这些章节,你将能够掌握cocos2d的核心功能,并能自信地运用到自己的...

    cocos2d js api 中文文档

    Cocos2d-js API中文文档是一份非常重要的资源,它为开发者提供了全面的Cocos2d-js框架的接口和功能介绍。Cocos2d-js是一个基于C++开发的游戏引擎,它将Cocos2d-x的功能与JavaScript语言相结合,使得游戏开发更加便捷...

    cocos2d-android jar包全套.zip

    Cocos2d是一款开源的游戏开发框架,被广泛用于创建2D游戏、演示程序和其他互动内容。在Android平台上,Cocos2d-x是一个基于C++的版本,提供了原生的编程接口,同时也支持Java API,方便Android开发者使用。"cocos2d-...

    win32环境下cocos2d-x转码显示中文

    在Cocos2d-x中,可以通过`CCLabelTTF`或`CCLabelBMFont`来设置字体。确保所选字体包含中文字符集,例如Arial Unicode MS或SimHei等。 4. **配置编译器**:在使用Visual Studio时,确保项目属性配置正确。在“配置...

    cocos2d-x 滚动文字

    Label是Cocos2d-x中用于显示文本的类,它支持多种字体、颜色和对齐方式。为了实现滚动效果,我们可以在自定义类中维护一个缓冲区,用于存储即将显示的文字,并通过更新缓冲区内容和位置来实现文字的滚动。 ```cpp ...

    cocos2d-x 3.0

    本篇文章将深入探讨cocos2d-x 3.0中实现人物行走的关键技术和步骤,以及如何结合提供的代码和图片资源进行实践。 一、cocos2d-x 3.0简介 cocos2d-x 3.0是cocos2d-x系列的一个重要升级,它基于C++编写,支持跨平台...

Global site tag (gtag.js) - Google Analytics