cocos2d-x-3.1 Text Labels(官方正式译文)
介绍
cocos2d支持(true type字体)标签,和纹理地图集标签。
LabelTTF 标签的优缺点:
- 全部 TTF 字体的长处: 随意大小,支持调整字距.
 - 易于使用. 不须要外部编辑器.
 - 创建或更新很慢。是由于会创建一个新的纹理, 尤其是在Android设备上.
 
LabelAtlas, LabelBMFont 优缺点:
- 创建和更新很快, 是由于不会创建一个新的纹理.
 - 字体能够进行定制 (阴影, 渐变, 模糊, 等)
 - 依赖于外部编辑器: AngelCode / Hiero editor, GIMP / Photoshop
 - 假设缩放文本会失真
 
标签对象
创建标签: 简单方式
事例:
LabelTTF* ttf1 = LabelTTF::create("Hello World", "Helvetica", 12, Size(245, 32), TextHAlignment::CENTER);
fontName 是TTF字体所用的名字. 你也能够使用自定义的TTF文件. 你仅仅须要将 .ttf 的文件加入到你的项目中就可以.
假设载入字体失败,它会使用UIFont类.
注意: OpenGL的纹理大小会基于字体的大小和字体的名称进行自己主动计算.
创建标签: 复杂方式
你也能够使用以下的API创建纹理:
LabelTTF* LabelTTF::create(const char *string, const char *fontName, float fontSize,
const Size &dimensions, TextAlignment hAlignment,
VerticalTextAlignment vAlignment)
注意:假设你使用这样的方式, 你仅仅能使用OpenGL的纹理尺寸.假设纹理不够大, 仅仅有部分的标签将被渲染.
对齐方式
* TextAlignmentLeft (left alignment)
* TextAlignmentCenter (center alignment)
* TextAlignmentRight (right alignment)
假设你想改动对齐的方式能够使用 anchorPoint 属性. 事例:
//left alignment
label->setAnchorPoint(Vec2(0,0.5f));
// right alignment
label->setAnchorPoint(Vec2(1,0.5f));
// center aligment (default)
label->setAnchorPoint(Vec2(0.5f,0.5f));
文字内容
事例:
label->setString("Hello World 2");
注意: 你每次 setString 将会创建一个新的 OpenGL
 纹理. 这意味着 setString 会创建一个新的
 Label 而变的很慢. 所以, 不要使用Label对象,
 假设你想常常的更新它们. 能够考虑使用 LabelAtlas 来取代.
Color
你仅仅须要调用颜色參数就能够改变你的字体颜色例如以下:
label.setColor(Color3B(0,0,0)); // or
label.setColor(Color4B(0,0,0,0)); // setOpacity
Color3B 颜色事例:
* white - (255,255,255)
* black - (0,0,0)
* blue - (0,0,255)
* green- (0,255,0)
* red - (255,0,0)
* Grey – (84,84,84)
* Brown – (165,42,42)
* Pink – (255,192,203)
* Purple – (160,32,240)
* Yellow – (255,255,0)
* Gold – (255,215,0)
LabelBMFont标签
介绍
建议使用LabelBMFont 的方式来高速创建标签:
- 能够定制和编辑位图(图片)
 - 你能够更新或初始化标签而没有消耗
 - 它很灵活.每一个字母的标签都能够当作一个Sprite
 - 支持字距的调整
 
LabelBMFont标签解析是以官方代码格式来创建一个标签.要创建这些类的标签。你能够用这些编辑器:
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)
http://glyphdesigner.71squared.com/ (Mac
 only)
http://www.bmglyph.com (Mac
 only)
http://tinyfont.com (Mac
 only)
Java编辑器与Windows的编辑器:
Windows编辑器是官方的代码编辑器
Java编辑器:在Mac上执行
Java编辑器:有额外的功能。如阴影,渐变,模糊
创建一个LabelBMFont标签
事例:
LabelBMFont *label =LabelBMFont::create("hello font", "fonts/markerFelt.fnt", size.width/1.5, TextHAlignment::CENTER);
因为字体大小是固定的。你须要细致考虑你须要的字体大小.因为纹理存储器,单独的每一个大小的字体可能是低效的.在这样的情况下,它缩小标签可能是有意义的,以实现不同的尺寸的大字体.因为标签不过一个Node,你能够通过scale属性来实现
操作每一个字符
因为CCLabelBMFont是CCSpriteSheet的子类,你能够像一个CCSprite一样操纵的每一个字符.第一个字符将用tag=
 0加入。第二个字符将用tag= 1加入,依此类推 演示样例:
LabelBMFont *label =LabelBMFont::create("Bitmap Font Atlas" , "bitmapFontTest.fnt");
Sprite *char_B = label->getChildByTag(0); // character 'B'
Sprite *char_m = label->getChildByTag(3); // character 'm'
LabelAtlas标签
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1ODI5NzAzNg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
介绍
LabelAtlas是最快加入到cocos2d的标签,但它被BitmapFontAtlas所代替。LabelAtlas保持向后兼容性。可是你应该使用BitmapFontAtlas代替。
创建一个LabelAtlas标签
LabelAtlas* LabelAtlas::create(const char *string, const char *charMapFile, unsigned int itemWidth, int unsigned itemHeight, unsigned int startCharMap);
事例:
LabelAtlas *label1 = LabelAtlas::create ("Hello World","tuffy_bold_italic-charmap.png",48,64 ,' ');
CharMapFile
- charMapFile是一个包括了全部的字符的图像文件,每一个字符依据其ASCII值排序,图像不能包括超过256个字符
 - itemWidth是字符的宽度(以像素为单位)
 - itemHeight是字符的高度(以像素为单位)
 - startCharMap是在地图的第一个字符。
 
LabelTTF 与 LabelAtlas
LabelTTF和LabelAtlas之间的主要差别是地图集版本号(像全部其它的地图集类),使用一个预渲染全部字符的大纹理来绘制一个字符串。这意味着。画图的速度要快得多。由于假设你画100个标签,图形处理器不会读取100个纹理,但仅仅是在内存中保持一个纹理。可是,这也意味着,全部的字母将有一个固定的大小。
假设你想要避开固定大小的限制。使用CCBitmapFontAtlas。
LabelTTF为每一个标签创建一个纹理。因而LabelAtlas使用所提供的纹理(包括全部字符),能高速地渲染文字,因此使用LabelAtlas减少了内存消耗。
cocos2d-x-3.1 Text Labels(官方正式译文)的更多相关文章
- Microsoft Message Analyzer (微软消息分析器,“网络抓包工具 - Network Monitor”的替代品)官方正式版现已发布
		
Microsoft Message Analyzer (微软消息分析器,“网络抓包工具 - Network Monitor”的替代品)官方正式版现已发布 来自官方日志的喜悦 被誉为全新开始的消息分析器 ...
 - PS官方正式中文版(搬砖分享)
		
https://pan.baidu.com/s/1c3IdQq0 PS官方正式中文版(搬砖分享) 注意事项: 1.安装开始前请先断网,在成功破解激活前请全程断网: 2.安装完成后先试运行软件一次,然后 ...
 - WPF: Creation of Text Labels for 3D Scene
		
原文:WPF: Creation of Text Labels for 3D Scene 转载:http://www.codeproject.com/KB/WPF/WPF_Text3D.aspx Do ...
 - Red Hat Enterprise Linux 官方正式版镜像下载
		
Red Hat Enterprise Linux是美国红帽公司开发的商业市场导向的Linux发行版,为方便大家学习研究,整理分享历代红帽官方正式版镜像给有需要的朋友们. 下载地址:https://ww ...
 - 【转载】win10应用商店独立安装包(一键安装) 2020最新版官方正式版
		
win10应用商店独立安装包(一键安装) 2020最新版官方正式版 Win10 LTSB 2016 / LTSC 2019系统,没有应用商店 需要下载应用商店安装包 蓝盘:https://www.la ...
 - Microsoft Message Analyzer (微软消息分析器,“网络抓包工具 - Network Monitor”的替代品)官方正式版现已发布
		
来自官方日志的喜悦 被誉为全新开始的消息分析器时代,由MMA为您开启,博客原文写的很激动,大家可以点击这里浏览:http://blogs.technet.com/b/messageanalyzer/a ...
 - Windows 10 RTM 官方正式版
		
Windows 10 各版本区别: Windows 10 家庭版:供家庭用户使用Windows 10 专业版:供小型企业使用 在家庭版基础上增加了域账号加入.bitlocker.企业商店等功能Wind ...
 - Adobe Flash Player 29.0.0.140官方正式版
		
Adobe Flash Player 29 正式版例行更新,v29.0.0.140 这是最新详细版本号,Adobe采取和微软相似的更新策略,在每个月的第二个周二为产品发布安全更新.Adobe® Fla ...
 - Go 1.4 正式版发布,官方正式支持 Android
		
Go 1.4 正式发布啦,是第五个 Go 的稳定版本,与上一个稳定版本 Go 1.3 相隔 6 个月.Go 1.4 包括一些小的语言改进,支持更多的操作系统和处理器架构:改进了工具链和库.同时,Go ...
 
随机推荐
- AJAX获取JSON形式的数据
			
test.html: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...
 - JS一些小算术、1加到50、乘法口诀表、买鸡等
			
//从1加到50 for (var a=1,i=0;a<51; a++) {i=a+i} document.write(i);//1加到50 var num=0; for(var i=1;i&l ...
 - Thinkphp的页面判断
			
目前在做的系统中,涉及到了前端页面的判断,比如性别在数据库中存储为0或1,而页面显示应该为“男”或“女”,这里就需要用到页面判断. 比如, <volist name="st" ...
 - 软件测试学习日志———— round 2 Junit+intellj idea 安装及简单的测试使用
			
今天是软件测试的上机,主要内容是对junit的安装以及对一个简单类的测试实践.老师推荐用eclipse,但是我原来一直在 用intellj Idea,所以我试了试intellj Idea对junit的 ...
 - Silverlight代码编写对控件的PlaneProjection.RotationY属性控制动画
			
Canvas c; void btnDraw_Click(object sender, RoutedEventArgs e) { Storyboard story = new Storyboard() ...
 - 走进C标准库(2)——"stdio.h"中的fopen函数
			
其他的库文件看起来没有什么实现层面的知识可以探究的,所以,直接来看stdio.h. 1.茶余饭后的杂谈,有趣的历史 在过去的几十年中,独立于设备的输入输出模型得到了飞速的发展,标准C从这个改善的模型中 ...
 - ubuntu下lamp环境配置及将window代码迁移至linux系统
			
因为最近要用需要去实现项目中的一个功能,比较好的做法就是在http://i.cnblogs.com/EditPosts.aspx?opt=1linux中实现.所以最近就将自己的代码全部迁移到linux ...
 - Syslog Cisco Incident
			
http://www.cisco.com/web/about/security/intelligence/identify-incidents-via-syslog.html
 - 【译】浅谈微软OneNote的自动化测试工具
			
当我们向人们介绍OneNote的自动化时,有一个问题被相当频繁地提到,担忧我们的自动化框架中UI层面测试偏少. 我不喜欢基于UI的自动化.我知道在市场上有许多的自动化系统都是基于UI的自动化(点击按钮 ...
 - [LeetCode][Python]17: Letter Combinations of a Phone Number
			
# -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com' 17: Letter Combinations of a Phone Numb ...