文档章节

《Cocos2d-x游戏开发实战精解》学习笔记2--在Cocos2d-x中显示一行文字

爱琴海之女妖
 爱琴海之女妖
发布于 2016/02/16 21:03
字数 1156
阅读 36
收藏 0

   在Cocos2d-x中要显示文字就需要用到Label控件。在3.x版本的Cocos2d中,舍弃了之前版本所使用的LabelTTFLabelAtlasLabelBMFont 3个用于显示文字的类,而使用一个新类Label取代。可想而知,Label实际上就是对之前3个类进行重新封装并统一渲染。

提示:实际上老版本的内容在3.x版本中依然是可以使用的。

下面是在Cocos2d-x中显示文字的一个例子,具体完整项目可在源文件本章目录下找到项目ChapterThree01查看。

【范例3-1 Cocos2d-x中显示文字】

auto label1 = Label::create("this is the first label","Arial",36,
                 Size::ZERO,TextHAlignment::LEFT,TextVAlignment::TOP);         //创建标签
label1->setPosition(210, 310);                                                //设置标签位置
addChild(label1);                                                             //加入到场景中
//通过TTFConfig在标签中使用自定义字体
TTFConfig ttfconfig("fonts/chunkmuffinhollowwide.ttf", 36);                    //创建TTFConfig对象
auto label2 = Label::createWithTTF(ttfconfig,"this is the second label");      //创建标签
label2->setPosition(270,250);                                                  //设置标签位置
addChild(label2);                                 //将标签加入到场景中
//使用createWithTTF方法创建使用自定义字体的标签
auto label3 = Label::createWithTTF("this is the third label","fonts/Marker Felt.ttf",36);
label3->setPosition(200, 190); 
addChild(label3);                                          //将标签加入到场景中
//为标签加入阴影和边框效果
auto label4 = Label::createWithTTF("this is the fourth label", "fonts/Marker Felt.ttf", 36);
label4->setPosition(280,130);                                  //设置标签位置
label4->enableShadow(Color4B::GREEN, Size(5, 5));                              //设置阴影效果
label4->enableOutline(Color4B::RED, 3);                                        //设置边框效果
addChild(label4);                                           //将标签加入到场景中
//创建带发光效果的标签
auto label5 = Label::createWithTTF("this is the fifth label", "fonts/Marker Felt.ttf", 36);
label5->setPosition(200, 70);                              //设置标签位置
label5->enableGlow(Color4B::GREEN);                                            //设置光效
addChild(label5);                                        //将标签加入到场景中

运行之后的效果如图3-1所示。

3-1 在屏幕上显示不同效果的标签

在一般情况下想要在屏幕上输出一行文字只需要按照第01~04行的方法来创建一个标签,然后再将它加入到场景中去就可以了。最简单的创建标签的方法如范例第01~02行所示,其中create方法的6个参数含义分别是:

l  标签中所显示文字的内容

l  标签字体

l  标签内容字体大小

l  标签尺寸

l  标签中文字在横向和纵向的对齐方式

这看上去有点复杂,实在配不上“最简单”的创建方法,所以一般在使用时可以进一步简化,仅保留前3项参数,比如本范例第01行就可以改写成:

auto label1 = Label::create("this is the first label","Arial",36);

显示的文字如图3-1第一行所示,所以说在Cocos2d中显示文字是非常容易的。然而不能忘记的是,学习Cocos2d的目的主要还是为了做游戏,这样单调的文字自然是远远不能适应游戏的需要,所以就需要在标签中使用更加个性化的字体。

Cocos2d 2.x版本中,可以使用LabelTTF类创建标签来使用TTF格式的字体,然而在Cocos2d 3.x中由于LabelTTF被取消(实际仍然可以使用),就要考虑使用其他办法来显示自定义字体。目前主要有两种方法:

l  一种是通过TTFConfig配置来创建,如范例第06~09行所示;

l  另一种是使用createWithTTF方法创建使用TTF字体的标签,如范例第11~13行所示。

这两种方法从本质上来说都是从资源目录下读取TTF格式的字体文件,可以在项目目录下找到Resources|fonts文件夹,将从网上下载的字体文件存放在这里。

为了让字体具有更强大的视觉冲击力,还可以给文字加入阴影和边框以及外发光的效果。如范例第17行就是给标签加入阴影,其中Color4B::GREEN是阴影的颜色而Size(5, 5)是阴影相对于文字的相对位置。第18行则是用来设置文字边框的,两个参数分别用来设置边框颜色和宽度。第23行为文字加入的外发光效果只有一个参数,那就是光效的颜色。

自学必备!!


© 著作权归作者所有

爱琴海之女妖
粉丝 1
博文 10
码字总数 6939
作品 0
东城
私信 提问
OSC 第 115 期高手问答 -- 移动手游 Cocos2d-x 开发大家谈

OSCHINA 本期高手问答(4月5日-4月13日)我们请来了 @isapanda (欧桐桐)为大家解答关于移动手游Cocos2dx和移动跨平台游戏前景方面的问题。 @isapanda ,毕业于大连海事大学信息管理与信息系统...

开源中国股侠
2016/04/05
3.6K
37
关东升老师双十一大回馈!购课送书啦~~~

关东升老师的大名想必各位都听说过吧~~~ 【关东升老师的简介】 精通多种IT技术,参与设计和开发北京市公交一卡通百亿级大型项目,开发国家农产品追溯系统、金融系统微博等移动客户端项目,...

51CTO学院
2017/11/08
0
0
为回馈广大学员,智捷课堂买关老师Cocos2d-x课程送Cocos2d-x图书

为回馈广大学员,智捷课堂买关老师Cocos2d-x课程送Cocos2d-x图书 一、凡购买如下课程送一本图书: 1、 Cocos2d-x入门与提高视频教程Part 2 2、 Cocos2d-x数据持久化与网络通信Part 3 3、 Co...

tony关东升
2018/06/29
0
0
移动应用和游戏开发两个阶段在线视频培训的未来计划

在51CTO学院开线上视频课程已经3个多月了,也上了不少课。不过发现还有很多课没有开。现在就将未来的开课计划公布一下。计划分为两个阶段。第一阶段主要是Cocos2d-x和Cocos2d-js的游戏开发培...

androidguy
2018/06/29
0
0
cocos2d-x支持c++、js、lua开发

作者:左文 链接:https://www.zhihu.com/question/21130385/answer/21789568 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 纯属个人观点 1 Unity3d支...

壹峰
2017/10/18
200
0

没有更多内容

加载失败,请刷新页面

加载更多

UAVStack功能上新:新增JVM监控分析工具

UAVStack推出的JVM监控分析工具提供基于页面的展现方式,以图形化的方式展示采集到的监控数据;同时提供JVM基本参数获取、内存dump、线程分析、内存分配采样和热点方法分析等功能。 引言 作为...

宜信技术学院
19分钟前
4
0
MySQL的5种时间类型的比较

日期时间类型 占用空间 日期格式 最小值 最大值 零值表示 DATETIME 8 bytes YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00 9999-12-31 23:59:59 0000-00-00 00:00:00 TIMESTAMP 4 bytes YYYY-MM......

物种起源-达尔文
26分钟前
6
0
云服务OpenAPI的7大挑战,架构师如何应对?

阿里妹导读:API 是模块或者子系统之间交互的接口定义。好的系统架构离不开好的 API 设计,而一个设计不够完善的 API 则注定会导致系统的后续发展和维护非常困难。比较好的API设计样板可以参...

阿里云官方博客
30分钟前
5
0
Rancher + VMware PKS实现全球数百站点的边缘K8S集群管理

Sovereign Systems是一家成立于2007年的技术咨询公司,帮助客户将传统数据中心技术和应用程序转换为更高效的、基于云的技术平台,以更好地应对业务挑战。曾连续3年提名CRN,并且在2012年到2...

RancherLabs
34分钟前
5
0
6、根据坐标,判断该坐标是否在地图区域范围内

最近在写配送区域相关的代码,具体需求如下: 根据腾讯地图划分配送区域,总站下边设多个配送分站,然后将订单中的收货地址将其分配给不同的配送分站。 1、地图区域划分(腾讯地图) 1.1、H...

有一个小阿飞
36分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部