Labels and Fonts 标签和字体

Introduction 介绍

cocos2d 支持 TTF (True Type Fonts) 标签和纹理 atlas 标签.

Pros and Cons of TTF labels: ( Label )

  • + All the pros of TTF fonts: any size, kerning support, etc.
  • + 简单实用,不需要外部编辑器.
  • - 创建和更新很慢,因为一个新的纹理将要被创建

Pros and Cons of texture atlas labels: ( LabelAtlasBitmapFontAtlas )

  • + 创建和更新很快,因为它不需要创建新的纹理.
  • + 字体可以自定义 (shadows, gradients, blur, etc)
  • - 依赖于外部的编辑器: AngelCode / Hiero editor, GIMP / Photoshop

Label objects 标签对象

Creating labels 创建标签的简单方式

例如:

Label *label = [Label labelWithString:@"Hello World" fontName:@"Marker Felt" fontSize:24];[self add: label];

fontName 是要使用的 TTF 格式字体的名字

从 v0.8.2 版本开始,你可以使用自定义的TTF文件. 只需要把.ttf 文件加入到工程. 例如自定义的TTF 文件:

Label *label = [Label labelWithString:@"Hello World" fontName:@"Schwarzwald Regular" fontSize:24];[self add: label];

从 v0.8.2版本开始:

  • 使用FontLabel 库来读取字体.
  • 如果不成功将会使用 UIFont 类 (like in v0.8.1)

重要: OpenGL 纹理的大小将会根据字体的大小和名字自动计算出来.

创建标签的复杂方式:

你同样可以使用 API创建:

Label *left = [Label labelWithString:@"Hello World" dimensions:CGSizeMake(480,50) alignment:UITextAlignmentLeft fontName:@"Marker Felt" fontSize:32];[self add: left]

如果你使用了这种方式,那么你必须传递一个OpenGL纹理的维度,如果这个纹理不够大,那么只能创建出来一部分了。

可能的对齐方式:

  • UITextAlignmentLeft (左对齐)
  • UITextAlignmentCenter (居中)
  • UITextAlignmentRight (右对齐)

Updating更新

Like any object that implements the CocosNodeLabel protocol you can update it using the setString method. Example:

[label setString: @"Hello World 2"];

重要: 每次调用 setString 的时候,一个新的OPENGL 纹理将会被创建. 这意味着setString 和创建一个新的标签一样慢.所以,当你需要频繁的更新它们的时候,尽可能的不用去使用标签对象。而应该使用LabelAtlas或者是BitmapFontAtlas

Alignment 对齐

使用anchorPoint 属性可以改变对齐方式. 例如:

//left alignment[label setAnchorPoint: ccp(0, 0.5f)];

// right alignment[label setAnchorPoint: ccp(1, 0.5f)];

// center aligment (default)[label setAnchorPoint: ccp(0.5f, 0.5f)];

Texture Atlas labels

一共有两种类型的 atlas:

  • BitmapFontAtlas
  • LabelAtlas

BitmapFontAtlas

Introduction 介绍

BitmapFontAtlas 可以创建一个很快的标签有以下几个原因:

  • bitmap (image) 可以通过编辑器自定义
  • 可以没有任何时间中断去创建或者更新一个标签
  • It is very flexible. Each letter of the label can be treated like an AtlasSprite
  • 有内核的支持

The BitmapFontAtlas label parses the Angel Code Font format to create a label. To create these kind of labels, you can use any of these editors:

  • http://www.n4te.com/hiero/hiero.jnlp (java version)
  • http://slick.cokeandcode.com/demos/hiero.jnlp (java version)
  • http://www.angelcode.com/products/bmfont/ (windows only)

Java版本编辑器 vs. Windows版本的编辑器:

  • Windows 编辑器是官方的Angel Code 编辑器
  • Java版本编辑器: 可以在Mac使用
  • Java 版本编辑器: 可以有一些额外的特性例如 shadow, gradient, blur

创建一个BitmapFontAtlas

通过如下的方式可以创建一个对象:

BitmapFontAtlas *label = [BitmapFontAtlas bitmapFontAtlasWithString:@"Hello World" fntFile:@"bitmapFontTest.fnt"];[self add:label]

操作

由于 BitmapFontAtlas 是 AtlasSpriteManager的子类,你可以以AtlasSprite的形式操纵其中的任何一个字符。第一个字符以tag=0的形式加载,第二个是依次加1。等等。。例如:

BitmapFontAtlas *label = [BitmapFontAtlas bitmapFontAtlasWithString:@"Bitmap Font Atlas" fntFile:@"bitmapFontTest.fnt"];AtlasSprite *char_B = (AtlasSprite*) [label getChildByTag:0]; // character 'B'AtlasSprite *char_m = (AtlasSprite*) [label getChildByTag:3]; // character 'm'

LabelAtlas

Introduction 介绍

LabelAtlas是cocos2d里面最快的。但是是BitmapFontAtlas子类。它落后的兼容性还是被维护的,但是你可以使用BitmapFontAtlas替换。

Creating a LabelAtlas 创建一个LableAtlas

LabelAtlas *label = [LabelAtlas labelAtlasWithString:@"Hello World" charMapFile:@"tuffy_bold_italic-charmap.png" itemWidth:48 itemHeight:64 startCharMap:' '];[self add:label];

  • charMapFile是一个包含所有字符的图像文件。每一个符号都可以按着ASCII进行排序,并且不能包含多于256的符号在里面
  • itemWidth 是字符的宽度像素为单位
  • itemHeight 是字符里面的最高的以像素为单位
  • startCharMap 是Map里面的第一个字符.

LabelAtlas / BitmapFontAtlas 如何更新

像其他的 CocosNodeLabel 协议中的对象一样。我们使用 setString 方法进行更新.

[label setString:@"Hello World 2"];

更新一个 LabelAtlas 或者是 BitmapFontAtlas 基本上不耗费什么时间

LabelAtlas / BitmapFontAtlas 的对齐方式

如果你要修改对齐方式可以使用anchorPoint属性.例如:

//left alignment[label setAnchorPoint: ccp(0, 0.5f)];

// right alignment[label setAnchorPoint: ccp(1, 0.5f)];

// center aligment (default)[label setAnchorPoint: ccp(0.5f, 0.5f)];

转载于:https://www.cnblogs.com/pengyingh/articles/2434571.html

cocos2d Labels and Fonts 标签和字体相关推荐

  1. cocos2d Labels and Fonts 标签和字体(附:关于Hiero的二三事)

    Labels and Fonts 标签和字体 Introduction 介绍 cocos2d 支持 TTF (True Type Fonts) 标签和纹理 atlas 标签. Pros and Con ...

  2. python 标签字体大小,Python:如何增加/减少x和y刻度标签的字体大小?

    在使用matplotlib时,我似乎在确定如何增加或减少x和y刻度标签的字体大小时遇到​​问题. 我知道有set_xticklabels(标签,fontdict = None,minor = Fals ...

  3. java图标中设置背景、文本框设置大小、标签中字体的格式

    ImageIcon icon = new ImageIcon("C:\\Users\\lenovo\\Pictures\\Saved Pictures\\小.jpg");dayBt ...

  4. 设置a标签链接字体的颜色

    页面代码: <div class="mybtn14_3"> <a href="view/business/tasksTypeAdd.jsp"& ...

  5. MATLAB画图——设置轴标签不同字体

    MATLAB画图--设置轴标签不同字体 投论文需要插入MATLAB图,但是图需要按照严格的文字格式怎么办?如,x轴标签"时间/s"需要8号字体且中文宋体,英文Times New R ...

  6. html中input字体加粗,更改checkboxGroupInput标签的字体标记(即粗体,斜体)

    我正在用R中的Shiny创建一个Web应用程序.我有一个我在地图上绘制的数据集.使用checkboxGroupInput小部件,用户可以选择他们想要在地图上看到的类别(或不).但是,数据集会随着时间而 ...

  7. 实现随机标签,字体大小、颜色随机显示

      最近写毕业,想实现一下如下图所示的效果(这里以学弟个人博客里的为示例):   如上图所示,随机标签,字体颜色随机,字体大小随机.   下面贴一下我的实现代码.   <template> ...

  8. R语言使用plot函数可视化数据散点图,使用font.axis参数指定坐标轴刻度标签的字体类型为斜体字体(italic)

    R语言使用plot函数可视化数据散点图,使用font.axis参数指定坐标轴刻度标签的字体类型为斜体字体(italic) 目录

  9. HTML页面使用Google Fonts里的字体(vscode)

    1.打开谷歌字体网站https://fonts.google.com/ 找到想要的字体,点击右侧select加号,然后点右上角的view selected family,在use web里复制字体ur ...

  10. [note]浏览器兼容性(embed标签、字体兼容相关

    为什么80%的码农都做不了架构师?>>>    <embed>标签 在做一个网页的时候,一直都用chrome测试效果,后来用opera和IE10看了一下-- 用html5 ...

最新文章

  1. Charles抓取https请求
  2. ecshop模板smarty foreach详解 [ECshop]
  3. 为什么深度神经网络这么难训练?| 赠书
  4. IJCAI 2019:中国团队录取论文超三成,北大、南大榜上有名
  5. android 组装xml,Android中组装xml文件内容
  6. Jvm 系列(八):Jvm 知识点总览
  7. 七天学会NodeJS
  8. 在备份流程中使用date
  9. html如何设置字符类型,html 空格字符类型
  10. .NET Core + Kubernetes:Pod
  11. Java提高篇 —— Java关键字之static的四种用法
  12. CentOS 6.5下利用Rsyslog+LogAnalyzer+MySQL部署日志服务器
  13. php 给富文本里的图片增加ALT、TITLE属性
  14. linux基础实验报告6,Linux实验报告6参考答案.doc
  15. Hibernate组件作为复合主键(五)
  16. c语言程序设计 网上资源,超星尔雅C语言程序设计-资源包完整答案
  17. 线性链表 — 单链表
  18. mysql median_在MySQL中使用MEDIAN和MAX,MIN和AVG功能
  19. linux系统安装pidgin,linux下QQ的安装(pidgin的安装)
  20. 智工教育:公务员必考的知识点内容

热门文章

  1. 点击按钮传递参数并调用ajax,jQuery 单击使用 jQuery 的按钮并在 ajax 成功后将数据附加到响应...
  2. java编译速度_[译] Kotlin VS Java:编译速度大比拼
  3. mysql 日期格式化_每天一个常用MySQL函数-from_unixtime等
  4. vs2017远程编译linux教程,Visual Studio 2017 远程编译调试 Linux 上已存在的通过 Samba 共享的 CMake 工程...
  5. mysql grant记录信息
  6. oracle行相减,oracle两张表满足某个条件时,表中满足条件的那一行的某列相减
  7. python中的numpy库有什么优缺点_Python中Numpy库的基础知识点
  8. erc20钱包下载_DREP IOS客户端上线|支持BTC/DREP及所有ERC20通证,云端钱包功能
  9. mysql ibd文件还原_MySQL
  10. python读取excel_Python简单读取Excel示例