`

cocos2d 中添加显示文字的三种方式

 
阅读更多

最近在逛论坛的时候看到有的帖子说显示文本时用 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是每个字符的高度,这个不能设错,否则显示的时候可能就不对了。

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

  • 大小: 54.5 KB
  • 大小: 6.1 KB
分享到:
评论

相关推荐

    cocos2d-x 显示中文

    综上所述,要解决cocos2d-x中显示中文的问题,主要涉及正确设置编码、提供支持中文的字体、配置渲染方式以及处理本地化。通过这些步骤,你应该能够在你的cocos2d-x游戏中看到清晰的中文字符。如果还有问题,可能需要...

    learn cocos2d 2

    该章节将深入讨论Cocos2d中游戏构建块的概念,例如精灵(Sprite)的使用和管理,以及如何使用Cocos2d提供的各种节点和组件来构建游戏界面和交互元素。 6. 精灵深入解析 精灵是Cocos2d游戏中的基本视觉元素,本章节...

    cocos2d-x文字描边Demo

    Cocos2d-x中的文字描边主要依赖于`Label`类,这是引擎用于显示文本的基础组件。为了实现描边,我们需要对`Label`进行扩展,创建一个新的类,例如`StrokeLabel`,并在其中添加描边相关的属性和方法。这些属性可能包括...

    cocos2d-x 滚动文字

    在Cocos2d-x游戏开发框架中,滚动文字是一个常见的需求,例如用于显示游戏得分、提示信息等。本文将深入探讨如何使用tinyxml解析XML数据,结合Cocos2d-x的Label类和CCRenderTexture来实现滚动文字效果。 首先,tiny...

    cocos2d-x菜单

    cocos2d-x中的原始Menu类提供了一些基本的方法,如`create()`用于创建一个新的菜单,`addChild()`用于添加子节点,也就是菜单项,`alignItemsVertically()`和`alignItemsHorizontally()`则用于排列菜单项,使它们在...

    cocos2d-x游戏源码

    【cocos2d-x游戏源码】是一种基于C++的开源跨平台2D游戏开发框架,广泛用于开发手机游戏和桌面游戏。Cocos2d-x是Cocos2d-x项目的一部分,Cocos2d-x项目还包括Cocos2d-iphone、Cocos2d-html5等不同版本,适用于iOS、...

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

    Cocos2d-x是一个基于C++的开源2D游戏开发框架,其默认编码可能与Windows系统或项目中的文本文件编码不一致,因此需要进行转码处理来正确显示中文汉字。本文将深入探讨如何在Cocos2d-x中处理中文转码问题。 首先,...

    cocos2d-x绘制多种颜色字符串

    在Cocos2d-x这个强大的2D游戏开发框架中,绘制多颜色字符串是一个常见的需求,尤其是在制作游戏界面或者实现复杂的文字特效时。标题"“cocos2d-x绘制多种颜色字符串”"涉及到的关键技术点主要集中在如何在Cocos2d-x...

    cocos2d-js 简陋的排行榜

    在描述中提到的“很简陋的排行榜”,可能是指使用cocos2d-js 实现的一个基础的排行榜系统,虽然功能简单,但足以理解其基本原理和操作。 在构建排行榜系统时,首先我们需要了解cocos2d-js 的核心组件和功能。cocos...

    cocos2d 富文本的实现

    1. **标签(Label)类的扩展**:在cocos2d-x中,LabelTTF类是用于显示单行或多行文本的基本组件。为了支持富文本,我们需要扩展这个类,比如创建一个名为RichLabel的自定义类。这个类会处理复杂的文本格式,解析特定...

    cocos2d-x入门

    6. 脚本语言支持:除了C++,cocos2d-x还支持Lua和JavaScript,这两种脚本语言都可以用于编写游戏逻辑,且更易学习和调试。在“HelloWorldTouch”中,你可能看到如何用这些脚本语言来处理触摸事件和更新游戏状态。 7...

    cocos2d找茬游戏

    在本文中,我们将深入探讨如何使用Cocos2d框架开发一款找茬游戏。Cocos2d是一款广泛应用于2D游戏开发的开源引擎,它提供了丰富的功能和高效的性能,使得开发者可以轻松创建各种类型的游戏,包括找茬游戏。 找茬游戏...

    cocos2d-x 权威指南(高清)

    ### cocos2d-x 权威指南(高清) —— 关键知识点提炼 #### 一、Cocos2D-x概述 - **定义与特点**:Cocos2D-x是一款开源的游戏开发框架,支持跨平台开发,可以用于创建2D游戏、演示程序和其他图形界面交互应用。该...

    易知cocos2d开发教程

    在这个例子中,我们将学习如何创建一个基本的场景、如何添加文字标签以及如何切换场景等基础操作。通过这个简单的示例,我们可以熟悉cocos2d-iphone的基本工作流程。 #### 六、类库的主工程 Cocos2D-iPhone的主...

    Cocos2D-X开发学习笔记-渲染框架之菜单类的使用示例

    在Cocos2D-X中,菜单(Menu)类是游戏界面交互的重要组成部分,用于创建可点击的按钮集合,通常包含各种选项或功能触发器。本篇将深入探讨Cocos2D-X中的菜单类及其使用方法。 一、菜单类的基本概念 在Cocos2D-X中...

    cocos2d-x 滚动字幕和公告

    滚动字幕通常是指在游戏中以滚动的方式显示文字信息,它可以是从左到右、从右到左、从上到下或从下到上滚动。在cocos2d-x中,可以使用Label类来创建文字对象,并结合动作类(如MoveBy、MoveTo)来实现滚动效果。首先...

    Cocos2D-X2.2.3学习笔记5(UI系统)

    `CCScrollView`内部包含一个可滚动的容器,你可以向其中添加任何你想显示的Cocos2D对象。 Cocos2D-X的UI系统也支持触摸事件的处理。通过注册`CCTouchDelegate`,你可以监听和响应用户的触摸操作,为UI元素添加交互...

    cocos2d-x .fnt 文件生成工具

    在Cocos2d-x中,`.fnt`文件是一种字体配置文件,它存储了位图字体的相关信息,包括字符集、大小、位置等,以便在游戏中渲染文本。这种格式是由AngelCode的BMFont工具生成的,它可以将TrueType字体转换为适用于Cocos...

    cocos2d-x输入框

    在2.2.0版本中,Cocos2d-x提供了CCEditBox类来实现这个功能,它允许用户在游戏或应用中输入文字,常见于登录界面、设置选项或者游戏内的聊天系统。点九图(.9.png)是Android平台中常用的一种图片资源格式,可以...

    cocos2d-x 滚动文字(CCLabelTTF)

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

Global site tag (gtag.js) - Google Analytics