Cocos2d-x 3.0final 终结者系列教程14-L新abel-Cocos2d-x公文
目 录
https://github.com/chukong/cocos-docs/blob/master/manual/framework/native/v3/text-label/zh.md
欢迎大家斧正错误,提交PR。
在游戏开发中,文字起了很关键的数据。游戏介绍、游戏中的提示以及对话等都须要用到文字,Cocos2d-x中给文字渲染提供了灵活的机制。既能够用系统文字,也能够使用自己定义渲染字体。
另外。文本标签还可用来初始化菜单。
在开发中,我们最经常使用的4种文本标签是:Label, LabelAtlas, LabelTTF和LabelBMFont。当中3.0尤其提倡使用Lable取代LabelTTF和LabelBMFont,由于Label在渲染速度上较其快。下面我们具体解说下它们的用法。
新文本标签类Label
3.0中你能够使用Label类创建LabelTTF和LabelBMFont中随意一种标签,与他们2种不同的是。新标签类继承于SpriteBatchNode类,这样一来大大提高了渲染速度。
下面代码列举几种创建Label的方法:
auto newLabel1 = Label::create("New Label", "Arial", 30);
auto newLabel2 = Label::createWithBMFont("bitmapFontTest.fnt", "New Label");
newLabel1->setPosition(Point(visibleSize.width / 2 + origin.x, visibleSize.height / 2 + origin.y));
newLabel2->setPosition(Point(visibleSize.width / 2 + origin.x, visibleSize.height / 2 + origin.y - 100));
addChild(newLabel1);
addChild(newLabel2);
TTFConfig ttfConfig;
ttfConfig.fontSize = 30;
ttfConfig.fontFilePath = "Paint Boy.ttf";
auto label2 = Label::createWithTTF(ttfConfig, "New Label");
label2->setPosition(Point(visibleSize.width / 2 + origin.x, visibleSize.height / 2 + origin.y + 100));
addChild(label2);
上面的样例中,我们使用新标签类创建了一个LabelTTF标签和LabelBMFont标签:
- create方法默认创建一个LabelTTF标签,參数也和创建LabelTTF标签一样
- createWithBMFont方法创建一个LabelBMFont标签,第一个參数为文件名称,第二个參数为要显示的内容
- createWithTTF方法使用.ttf文件来创建一个LabelTTF标签,须要注意的是要设置字体大小必须先配置好TTFConfig
其它文本标签
以上介绍了新标签类后,我们来看下曾经的标签类。虽然3.0使用了新标签类。可是为了向下兼容,一些曾经的标签类仍然能够使用。
图片文字LabelAtlas
LabelAtlas类是使用图片作为文字,该类直接使用图片初始化文字对象。此类支持两种文件类型来初始化:
- PNG文件
- plist文件
下面代码使用两种不同文件初始化一个文字对象:
auto label1 = LabelAtlas::create("PNG Test", "tuffy_bold_italic-charmap.png", 48, 64, ' ');
label1->setPosition(Point(visibleSize.width / 2 + origin.x, visibleSize.height / 2 + origin.y));
addChild(label1); auto label2 = LabelAtlas::create("Plist Test", "tuffy_bold_italic-charmap.plist");
label2->setPosition(Point(visibleSize.width / 2 + origin.x, visibleSize.height / 2 + origin.y - 100));
addChild(label2);
以下解释下LabelAtlas::create()的5个參数:
- 第一个參数:标签要显示的内容
- 第二个參数:图片资源的名称
- 第三个參数:每一个字符的宽度。这个是在制作图片的时候自己设置的。上面代码中的字符宽度为48px,是制图时确定的
- 第四个參数:每一个字符的高度,同理,我们使用的图的每一个字符高度为64px
- 第五个參数:開始字符,该參数帮助找到第一个字符
系统字体LabelTTF
LabelTTF类使用系统中自带的字体,假设创建LabelTTF对象时未给出字体名字或者给出的名字系统中不存在,则使用引擎默认字体初始化对象。
引擎提供两种方式创建LableTTF:
- 用LabelTTF类的create方法创建
- 用Label类的createWithTTF方法创建,可是Label类是通过.ttf文件来创建的
下面代码分别使用LabelTTF和Label来创建Label:
auto label1 = LabelTTF::create("Create with LabelTTF", "Arial", 30);
label1->setPosition(Point(visibleSize.width / 2 + origin.x, visibleSize.height / 2 + origin.y));
addChild(label1); TTFConfig ttfConfig;
ttfConfig.fontSize = 30;
ttfConfig.fontFilePath = "Paint Boy.ttf";
auto label2 = Label::createWithTTF(ttfConfig, "Create with Label");
label2->setPosition(Point(visibleSize.width / 2 + origin.x, visibleSize.height / 2 + origin.y - 100));
addChild(label2);
字体图集LabelBMFont
LabelBMFont类是一个基于位图的字体图集。是一个包括全部你须要于坐标数据一起显示在屏幕上的字符的图像,它同意字符从主图中剪切出来。
下面代码用来创建LabelBMFont对象:
auto label = LabelBMFont::create("BMFont Test", "bitmapFontTest.fnt");
label->setPosition(Point(visibleSize.width / 2 + origin.x, visibleSize.height / 2 + origin.y));
addChild(label);
字体制作工具使用介绍
Cocos2d-x支持很多使用fnt文件格式的位图字体。以下介绍下怎样使用Glyph Designer一款Mac下的字体设计器来创建字体图集(Windows下可使用Hiero和BMFont):
- 步骤一:启动Glyph Designer,选择File->New,在左上的搜索框中键入须要的字体集名(这里使用”Helvetica”)
- 步骤二:设置字体尺寸为32,默认情况下Glyph Designer自己主动调整字体图集尺寸为最小可能值以适配全部可能的图像。
- 步骤三:在右边Glyph Fill里面选择颜色
- 步骤四:在Included Glyph里面点击NEHEbutton。在此区域键入你所须要用到的字符
- 步骤五:点击Export导出文件
- 步骤六:选择导出文件类型
下图展示了整个步骤
小结
在游戏开发中,标准字体不须要频繁更改时使用LabelTTF很合适。在须要定制文字或者在频繁改变文字内容时须要使用LabelBMFont。
但3.0的新标签类为你攻克了这个问题,你无须再考虑选择那种标签,仅仅需使用新标签类就可以。
文字标签类的另外一个作用是能够初始化菜单,关于菜单的使用方法在此不做具体解说,以下代码使用文字标签初始化菜单:
auto label = LabelBMFont::create("BMFont Test", "bitmapFontTest.fnt");
auto menuItemLabel = MenuItemLabel::create(label);
auto menu = Menu::create(menuItemLabel, NULL);
menu->setPosition(Point(visibleSize.width / 2 + origin.x, visibleSize.height / 2 + origin.y));
addChild(menu);
Cocos2d-x 3.0final 终结者系列教程14-L新abel-Cocos2d-x公文的更多相关文章
- Cocos2d-x 3.0final 终结者系列教程16-《微信飞机大战》实现
看到cocos2d-x推出了3.1版本号,真是每月一次新版本号,速度. 另一个好消息就是http://cn.cocos2d-x.org/上线了,祝贺!啥时候把我的视频和教程放上去呢?!! . 视频下载 ...
- Cocos2d-x 3.0final 终结者系列教程13-贪食蛇游戏案例(全)
快过节了.谢谢了屈原,我们爱你. 应该多几个向屈大人一样跳江的,这样我们就能够放假纪念啦. ---------------------------------快过节了.弄个案例,大家最好还是假期做做, ...
- Cocos2d-x 3.0final 终结者系列教程01-无论是从cocos2d-x2.x升级到版本cocos2d-x3.x
诡谲的江湖,易变. 花花世界,车来人往. 最终确定.安家,将Cocos2d-x3.0final相关技术精加工的版本.并推出了博客文章, 不为他人,只为自己. 学习交流QQ群:301954471 --- ...
- Cocos2d-x 3.0final 终结者系列教程04-引擎架构分析
从前,有一个跟我来Android学生,总是问我: 沉老师,为什么Android的形式被称为Activity,为什么要onCreate方法写setContentView(R.layout.main)? ...
- Cocos2d-x 3.0final 终结者系列教程03-源代码文件夹说明
话说今天从霍营到回龙观,走到天鑫家园东路.我肋哥去,堵死我啦.7:30出门,9:10还没到回龙观. 北京这交通真是坑爹.回过头想想.怪自己走小路,有时候确实快.可有时候真堵. 堵了35分钟后果断掉头, ...
- Cocos2d-x 3.0final 终结者系列教程15-win7+vs2012+adt+ndk环境搭建(无Cygwin)
最终不用Cygwin 了.非常高兴 为什么要用Win7? 由于VS2012要求Win7以上系统才干安装! 为什么要用vs2012? 由于VS2012才支持C++11! 为什么要支持C++11? 由于C ...
- Cocos2d-x 3.0final 终结者系列教程02-开发环境的搭建
本文主要以Mac平台和XCode5为基本系统环境和C++编程工具来介绍Cocos2d-x3.0final版的安装. 一.系统准备(预计要花掉半个月工资) MacBook Pro一台(本人的比較老.11 ...
- Cocos2d-x 3.0final 终结者系列教程05-AppDelegate入口类
下面是Cocos2d-x的程序入口: class AppDelegate : private cocos2d::Application { public: AppDelegate(); virtua ...
- Cocos2d-x 3.0final 终结者系列教程12-Vector&map&value
北京时间昨天下午,温40度.中午12:16我来到了篮球场点.思维1分钟决定开站 转球: 我和另一个3队友半开始, 我手中的球的那一刻我突然火爆球不稳,突然问,淡淡的味道橡胶和烧烤的味道混合. 个腾空跳 ...
随机推荐
- Asp.net MVC4 +EF6开发
Asp.net MVC4 +EF6开发的个人网站源码和介绍(仅供新手学习) 本项目是我去年利用业余时间开发的,采用的是asp.net mvc 4 +EF6+三层架构,适合新手进行学习,高手就没有什么价 ...
- uva 10817 Headmaster's Headache 出发dp 位计算
出发dp,用在一些议题的操作非常~ 给出s个课程.m个教师.n个求职者,教师必须招聘.然后招聘一些求职者,使得每一门课都至少有两个老师能教.问题就转换成了招聘哪些求职者使得花费最少.由于s范围小于8 ...
- datagrid直接编辑保存“设计缺陷”
当今使用easyUI的datagrid组件的时候,碰到了一些问题,记录下来以便下次高速解决. 需求是在一张表单里会关联有一个列表,能够增删查改 曾经没用easyUI的时候,这个增和改的页面我通常是用一 ...
- 了解HTML5和“她”的 API (一)
简化了文档声明.字符集 //声明 <!doctype html> //字符 <meta charset="utf-8"> 引入了新的标签元素 Select ...
- opengl微发展理解
1.什么是OpenGL? 一种程序,可以与界面和图形硬件交互作用.一个开放的标准 2.软件管道 请看上图 - Apllication层 表示你的程序(调用渲染命令.如opengl API) - ...
- GIF/PNG/JPG和WEBP/base64/apng图片优点和缺点整理(转)
如何获取图片对应的base64字符串呢? 1:使用代码获取: 运行下面代码 var reader = new FileReader(), htmlImage; reader.onload = func ...
- hdu 3076 ssworld VS DDD (概率dp)
///题意: /// A,B掷骰子,对于每一次点数大者胜,平为和,A先胜了m次A赢,B先胜了n次B赢. ///p1表示a赢,p2表示b赢,p=1-p1-p2表示平局 ///a赢得概率 比一次p1 两次 ...
- 左右margin top问题百分比值
不想说今天心情有多差! 9点多開始发现一个"bug",需求是依据屏幕高度动态调整某个div的位置.代码大概是这种. <div style="margin-top: ...
- OpenCV2学习笔记(十四):基于OpenCV卡通图片处理
得知OpenCV有一段时间.除了研究的各种算法的内容.除了从备用,据导游书籍和资料,尝试结合链接的图像处理算法和日常生活,第一桌面上(随着摄像头)完成了一系列的视频流处理功能.开发平台Qt5.3.2+ ...
- 蓝牙4.0BLE cc2540 cc2541 ios OAD课程(空中固件升级)[原版的,多图]
蓝牙4.0BLE cc2540 cc2541 ios OAD课程(件) 为阿莫单片机论坛 www.AmoMcu.com 原创.仅仅公布于csdn博客, 如需转载,请注明出处,谢谢! ...