Cocos2d-x 3.0标签类Label
Cocos2d-x 3.0后推出了新的标签类Label,这种标签通过使用FreeType[1]来使它在不同的平台上有相同的视觉效果。由于使用更快的缓存代理,它的渲染也将更加快速。Label提供了描边和阴影等特性。
Label类的类图如下图所示:
创建Label类静态create函数常用的有如下几个:
- static Label* createWithSystemFont(conststd::string &text, //是要显示的文字
- const std::string& font, //系统字体名
- float fontSize, //字体的大小
- const Size& dimensions = Size::ZERO, //在屏幕上占用的区域大小,可省略
- TextHAlignment hAlignment = TextHAlignment::LEFT, //文字横向对齐方式,可省略
- TextVAlignment vAlignment = TextVAlignment::TOP) //文字纵向对齐方式,可省略
- static Label* createWithTTF(conststd::string & text,
- const std::string & fontFile, //字体文件
- float fontSize,
- const Size & dimensions = Size::ZERO, //可省略
- TextHAlignment hAlignment= TextHAlignment::LEFT, //可省略
- TextVAlignment vAlignment= TextVAlignment::TOP //可省略
- )
- static Label* createWithTTF(constTTFConfig& ttfConfig,
- const std::string& text,
- TextHAlignment alignment =TextHAlignment::LEFT,
- int maxLineWidth = 0
- )
- static Label* createWithBMFont(conststd::string& bmfontFilePath, //位图字体文件
- const std::string& text,
- const TextHAlignment& alignment =TextHAlignment::LEFT, //可省略
- int maxLineWidth = 0, //可省略
- const Point& imageOffset = Point::ZERO //可省略
- )
其中createWithSystemFont是创建系统字体标签对象,createWithTTF是创建TTF字体标签对象,createWithBMFont是创建位图字体标签对象。
下面我们通过一个实例介绍一下,它们的使用。这个实例如图下图所示。
下面我们看看HelloWorldScene.cpp中init函数如下:
- bool HelloWorld::init()
- {
- if ( !Layer::init() )
- {
- return false;
- }
- Size visibleSize = Director::getInstance()->getVisibleSize();
- Point origin = Director::getInstance()->getVisibleOrigin();
- auto closeItem = MenuItemImage::create(
- "CloseNormal.png",
- "CloseSelected.png",
- CC_CALLBACK_1(HelloWorld::menuCloseCallback, this));
- closeItem->setPosition(Point(origin.x+ visibleSize.width - closeItem->getContentSize().width/2 ,
- origin.y + closeItem->getContentSize().height/2));
- auto menu = Menu::create(closeItem, NULL);
- menu->setPosition(Point::ZERO);
- this->addChild(menu, 1);
- autolabel1 = Label::createWithSystemFont("Hello World1","Arial", 36); ①
- label1->setPosition(Point(origin.x+ visibleSize.width/2,
- origin.y + visibleSize.height - 100));
- this->addChild(label1,1);
- autolabel2 = Label::createWithTTF("Hello World2", "fonts/MarkerFelt.ttf", 36); ②
- label2->setPosition(Point(origin.x+ visibleSize.width/2,
- origin.y + visibleSize.height - 200));
- this->addChild(label2,1);
- autolabel3 = Label::createWithBMFont("fonts/BMFont.fnt", "HelloWorld3"); ③
- label3->setPosition(Point(origin.x+ visibleSize.width/2,
- origin.y + visibleSize.height - 300));
- this->addChild(label3,1);
- TTFConfigttfConfig("fonts/Marker Felt.ttf",
- 36,
- GlyphCollection::DYNAMIC); ④
- autolabel4 = Label::createWithTTF(ttfConfig, "Hello World4"); ⑤
- label4->setPosition(Point(origin.x+ visibleSize.width/2,
- origin.y + visibleSize.height - 400));
- this->addChild(label4, 1);
- ttfConfig.outlineSize= 4; ⑥
- autolabel5 = Label::createWithTTF(ttfConfig, "Hello World5"); ⑦
- label5->setPosition(Point(origin.x+ visibleSize.width/2,
- origin.y + visibleSize.height - 500));
- label5->enableShadow(Color4B(255,255,255,128),Size(4, -4)); ⑧
- label5->setColor(Color3B::RED); ⑨
- this->addChild(label5,1);
- return true;
- }
在上面的代码中第①是通过createWithSystemFont函数创建Label对象,第②行代码是通过createWithTTF是创建TTF字体标签对象,第③行代码是createWithBMFont是创建位图字体标签对象。
第④行代码TTFConfig ttfConfig("fonts/Marker Felt.ttf", 36, GlyphCollection::DYNAMIC)是创建一个TTFConfig结构体变量,TTFConfig结构体的定义如下:
- _ttfConfig(constchar* filePath = "", //字体文件路径
- int size = 12, //字体大小
- constGlyphCollection& glyphCollection = GlyphCollection::DYNAMIC, //字体库类型
- constchar * customGlyphCollection = nullptr, //自定义字体库
- booluseDistanceField = false, //用户是否可缩放字体
- intoutline = 0 //字体描边
- )
第⑤行代码Label::createWithTTF(ttfConfig,"Hello World4")是通过指定TTFConfig创建TTF字体标签。第⑥行代码ttfConfig.outlineSize = 4设置TTFConfig的描边字段。第⑦行代码Label::createWithTTF(ttfConfig,"Hello World5")是重新创建TTF字体标签。
第⑧行代码label5->enableShadow(Color4B(255,255,255,128),Size(4, -4))是设置标签的阴影效果。第⑨行代码label5->setColor(Color3B::RED)是设置标签的颜色。
[1] FreeType库是一个完全免费(开源)的、高质量的且可移植的字体引擎,它提供统一的接口来访问多种字体格式文件。——引自于百度百科http://baike.baidu.com/view/4579855.htm
Cocos2d-x 3.0标签类Label的更多相关文章
- Flutter 标签类控件大全Chip
老孟导读:Flutter内置了多个标签类控件,但本质上它们都是同一个控件,只不过是属性参数不同而已,在学习的过程中可以将其放在放在一起学习,方便记忆. RawChip Material风格标签控件,此 ...
- JavaEE自定义标签:标签类的创建、tld配置文件的创建(位置、如何创建)、Web-XML配置、JSP应用
1.标签 以类似于html标签的方式实现的java代码的封装. 第一:形成了开发标签的技术标准---自定义标签的技术标准. 第二:java标准标签库(sun之前自己开发的一系列的标签的集合)jstl, ...
- 小tips:JS语法之标签(label)
JavaScript语言允许,语句的前面有标签(label),相当于定位符,用于跳转到程序的任意位置,标签的格式如下. label: statement 标签可以是任意的标识符,但是不能是保留字,语句 ...
- EffectiveJava(20)使用子类型化优化标签类
标签类:其中有许多样板代码,包括枚举声明,标签域和条件语句 如果要给它添加风格,除了有权限修改源码之外,你还得给每个条件语句都添加一个条件,否则就会在运行时失败 标签类过于冗长,容易出错,并且效率低下 ...
- 列表框、分组列表框、标签(label)、分组框(fieldset)、框架(frameset)
列表框(select) 下拉列表,用户可以从一些可选项中选择. 示例:简单的下拉列表 <select name="country"> <option value= ...
- EF 5.0 帮助类
EF 5.0 帮助类 加入命名空间: using System; using System.Data; using System.Data.Entity; using System.Data.Enti ...
- EffectiveJava——类层次优于标签类
标签类: 有时候,可能会遇到带有两种甚至更多钟风格的类的实例的类,并包含表示实例风格的(tag)域.例如下面这个类,它能够表示圆形或者矩形: /** * 类层次优先与标签类 * @author wei ...
- EF 5.0 帮助类 增删改查
原文地址:http://www.cnblogs.com/luomingui/p/3362813.html EF 5.0 帮助类 加入命名空间: using System; using System.D ...
- Aspose.Cells for .NET 8.5.0 工具类
基于 Aspose.Cells for .NET 8.5.0 工具类, Aspose.Cells for .NET 8.5.0 这个自己去CSDN下载里面有破解的,没有破解的导出excel的时候会(A ...
随机推荐
- Flex数据交互之Remoting[转]
Flex数据交互之Remoting 一 前言 Flex数据交互常用的有三种方式:WebService.HttpService以及Remoting. WebService方式已在这篇文章中给出,这篇文章 ...
- linux 认证方式
- CSS 居中大全【转】
我看最近微博流行 CSS 居中技术,老外码农争相写相关的文章,一篇赛一篇的长啊,我把几篇归纳总结了一下,算是笔记. 孔乙己曾说:“茴香豆的回字有四种写法”,万一哪天有个面试官问你:“居中一共有几种写法 ...
- mysqldump 使用 --set-gtid-purged
1.导出时指定字符集,报错Character set 'utf-8' is not a compiled character set and is not specifie .--default-ch ...
- 如何快速掌握CSS(各种CSS工具)
CSS中的大量属性难以记忆,通过组合多种CSS工具,可以快速学习常见样式,并提高设计效率.这里给大家推荐一些比较好的在线工具,通过所见即所得图形化界面设计样式,直接得到对应的CSS代码.相比臃肿的集成 ...
- spring框架七大模块
1. Spring Core: Core封装包是框架的最基础部分,提供IOC和依赖注入特性.这里的基础概念是BeanFactory,它提供对Factory模式的经典实现来消除对程序性单例模式的需要,并 ...
- 分布式缓存技术redis学习(三)——redis高级应用(主从、事务与锁、持久化)
上文<详细讲解redis数据结构(内存模型)以及常用命令>介绍了redis的数据类型以及常用命令,本文我们来学习下redis的一些高级特性.目录如下: 安全性设置 设置客户端操作秘密 客户 ...
- LeetCode32 Longest Valid Parentheses
题目: Given a string containing just the characters '(' and ')', find the length of the longest valid ...
- iOS “请在微信客户端打开链接” UIWebview加载H5页面携带session、cookie、User-Agent信息 设置cookie、清除cookie、设置User-Agent
公司新开的一个项目..内容基本上是加载H5页面显示..当时觉得挺简单的..后来发现自己掉坑里了..一些心理历程就不说了..说这个项目主要用到的知识点吧..也是自己踩得坑. 首先说说..这个项目上的内容 ...
- [Windows] VS2010代码模板添加版权信息
通过以下方式可以自定义CS类文件代码模板(以下为VS2010,VS2008类似): 1,打开VS的安装目录,例如 D:\Program Files\Microsoft Visual Studio 10 ...