Cocos2dx 3.0 过渡篇 (二十一)自从Label有了freeType做靠山以后...enableShadow

cocos creator入门教程(十)—— cc.Label组件使用 cc.Label组件使用 cc.Label 1:cc.Label是显示文字的组件; 2:cc.Label属性面板: String: 文本显示的内容; Horiznotal: 水平对齐的方式: 左 右 居中; Vertial: 上, 下, 居中, 字与行的排版 Font Size: 字体大小; LineHeight: 每行的... 阅读详情

Cocos2dx 3.0 过渡篇 (二十一)自从Label有了freeType做靠山以后...

分类: cocos2d-x学习笔记   3818人阅读  评论(14)  收藏  举报
cocos2dx 3.0版本之前,我们一直都是用CCLabelTTF,CCLabelBMFont,CCLabelAtlas来创建文本标签, 但是!3.0版本放出来后...看到这里你心里是不是又颤抖了一下?别害怕嘛,我要说的是: 3.0版本出来后这些标签也都是还可以用的啦,只是说我们有了更好的选择。

cocos2dx3.0添加了一种新的文本标签,这种标签不同的地方有:使用freetype来使它在不同的平台上有相同的视觉效果;由于使用更快的缓存代理,它的渲染也将更加快速;同时它还提供了绘边、阴影等特性。


所以因为Label,我决定离开abelTTF和LabelBMFont(这个开头你猜到了么?)
---------------------------------------------------

常用的接口一览(因为很多接口都与LabelTTFT等一样,所以就列一些我所了解的“异类”)

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. //创建普通的文本标签,效果和CCLabelTTF::create(...);一样。TTFConfig是什么?下面会介绍  
  2. static Label * create(const std::string& text, const std::string& fontName, float fontSize,  
  3.         const Size& dimensions = Size::ZERO, TextHAlignment hAlignment = TextHAlignment::LEFT,  
  4.         TextVAlignment vAlignment = TextVAlignment::TOP);  
  5.           
  6. //通过读取TTFConfig配置的方式创建标签,  
  7. static Label* createWithTTF(const TTFConfig& ttfConfig, const std::string& text, TextHAlignment alignment = TextHAlignment::LEFT, int lineWidth = 0);  
  8.   
  9. //使用.fnt的方式创建标签,类似CCLabelBMFont:create();      
  10. static Label* createWithBMFont(const std::string& bmfontFilePath, const std::string& text,  
  11.         const TextHAlignment& alignment = TextHAlignment::LEFT, int lineWidth = 0,   
  12.         const Point& imageOffset = Point::ZERO);  
  13.           
  14. //使用.png的方式创建标签,类似CCLabelAtlas::create();  
  15. static Label * createWithCharMap(const std::string& charMapFile, int itemWidth, int itemHeight, int startCharMap);  
  16.           
  17. virtual void enableShadow(const Color3B& shadowColor = Color3B::BLACK,const Size &offset = Size(2,-2), float opacity = 0.75f, int blurRadius = 0);  
  18. virtual void enableOutline(const Color4B& outlineColor,int outlineSize = -1);//只支持TTF  
  19. virtual void enableGlow(const Color3B& glowColor);//只支持 TTF   
  20.   
  21. virtual void disableEffect();//取消所有特效  
  22.   
  23. //特效的种类有一下四种:  
  24. enum class LabelEffect {  
  25.   
  26.     NORMAL,     //普通标签(纯粹的、脱离了低级趣味的label)  
  27.     OUTLINE,    //文艺标签(有描边)  
  28.     SHADOW,     //2B标签  (有阴影)  
  29.     GLOW        //土豪标签(有荧光)  
  30. };  
稍微提一下一个新东西:TTFConfig

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. //TTFConfig 是一个结构体,里面包含了你要创建一个ttf的label常用配置,如下所示  
  2. typedef struct _ttfConfig  
  3. {  
  4.     std::string fontFilePath;   //文件路径  
  5.     int fontSize;               //字体大小,默认12  
  6.     GlyphCollection glyphs;     //使用的字符集,默认DYNAMIC  
  7.     const char *customGlyphs;   //呵呵  
  8.     bool distanceFieldEnabled;  //我对这个的理解是:是否让文字显得紧凑?默认为false  
  9.     int outlineSize;            //字体描边的大小,默认为0  
  10.       
  11.     //构造函数  
  12.     ...  
  13.     //注意:当outlineSize初始化的值大于0时,distanceFieldEnabled则为false  
  14. }TTFConfig;  
  15.   
  16. //GlyphCollection有四种类型:  
  17. enum class GlyphCollection {  
  18.       
  19.     DYNAMIC,  
  20.     NEHE,  
  21.     ASCII,  
  22.     CUSTOM  
  23. };  

下面简单介绍Label的用法

1、使用.ttf
1)创建

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. TTFConfig config2("fonts/Marker Felt.ttf",30);//初始化TTFConfig,第一个参数为字库的路径,第二个参数为字体大小  
  2. auto label2 = Label::createWithTTF(config2,"createWithTTF",TextHAlignment::LEFT);//创建label,并向左对其  
  3. label2->setPosition(Point(visibleSize.width/2,300));  
  4. label2->setAnchorPoint(Point::ANCHOR_MIDDLE);//设置锚点居中  
  5. this->addChild(label2,2);  
当然了,也可以用Label创建普通的标签,效果和用CCLabelTTF::create()的一样

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. auto label4 = Label::create("create","Marker Felt",30);//  
效果如图所示:


2)另字体看起来紧凑点,也就是设置distanceFieldEnabled = true
直接修改config里的distanceFieldEnabled,方式如下:

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. TTFConfig config2("fonts/Marker Felt.ttf",30,GlyphCollection::DYNAMIC,nullptr,true);//修改config的第五个参数为true  


3)设置glow(荧光)效果,(我也不知道该怎么描述glow这词...)

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. label2->enableGlow(Color3B::GREEN);//荧光颜色为绿色  
效果如图所示。这里有个地方要注意下,想要显示荧光效果,必须令distanceFieldEnabled = true,否则看不到效果。


4)设置描边

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. label2->enableOutline(Color4B(255,125,0,255),8);//第一个参数为描边的颜色,第二个参数为描边的大小  
效果如图所示。注意,使用描边效果后,distanceFieldEnabled 将变成 false,这也意味着在有描边的情况下是显示不了荧光效果的(我想太多了...)


5)设置阴影

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. label2->enableShadow(Color3B::RED,Size(2,-2),0.2,0.5);//第一个参数为阴影颜色,第二个参数为阴影相对于标签的坐标,第三个参数设置透明度,第四个参数与模糊有关  


2、使用.fnt 的label
1)创建

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. auto label3 = Label::createWithBMFont("fonts/bitmapFontTest.fnt", "createWithBMFont");  
  2. label3->setPosition(Point(visibleSize.width/2,250));  
  3. label3->setAnchorPoint(Point::ANCHOR_MIDDLE);  
  4. this->addChild(label3,2);  
  5. label3->enableShadow();  


2)设置阴影(描边和荧光只能用在.ttf 上)

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. label3->enableShadow(Color3B::RED);  
效果如图,可以与上图对比一下。


3、使用.png
加入我们有这么一张图,使用方法如下:


1)创建

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. auto label4= Label::createWithCharMap("fonts/costFont.png",30,44,'/');//参数分别为:路径;每个字符的宽和高,起始字符  
  2. label4->setPosition(Point(visibleSize.width/2,200));  
  3. label4->setAnchorPoint(Point::ANCHOR_MIDDLE);  
  4. label4->setString("10");//设置显示的内容为”10“  
  5. this->addChild(label4,2);  


2)设置阴影

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. label4->enableShadow(Color3B::RED);  


4、取消所有特效
[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. label->disableEffect();//取消所有特效  


恩,就介绍到这里。具体的用法可以参考testCpp。

这篇博文内容虽比较简单,但却是极耗精力的....

尊重原创,转载请注明来源:http://blog.youkuaiyun.com/start530/article/details/22313087

Halcon——C#中在HWindow上显示字符串遇见的问题及解决方案 阅读详情

相关推荐

cocos2dx 运动轨迹特效源码

cocos2dx 运动轨迹特效源码,商业游戏必学技巧,xcode 工程,可自己加android或win32工程。

探索CCLabeler:高效、智能的图像标注工具

探索CCLabeler:高效、智能的图像标注工具 项目简介 是一个开源的图像标注工具,专为计算机视觉和深度学习任务设计。它基于Web,提供了一种直观、高效的界面,让用户能够轻松地对图像进行标签和分类操作,进而生成可用于训练模型的数据集。 技术分析 前端框架与交互设计 CCLabeler 使用现代化的前端框架如React进行构建,这使得其具有良好的性能和响应速度。交互设计遵循简洁易用的原则,使得即便...

gitblog_00021的博客 559

双闭环PWM整流器VOC控制 +SVPWM调制仿真(Simulink仿真实现)

内容概要:本文详细介绍了基于Simulink平台构建的双闭环PWM整流器VOC(虚拟磁链定向控制)与SVPWM(空间矢量脉宽调制)相结合的仿真模型,系统阐述了三相电压型PWM整流器在电压定向控制策略下的建模方法与控制实现。通过设计外环直流电压控制与内环电流控制的双闭环结构,实现了对整流器的高功率因数运行、能量双向流动及动态性能优化的精确调控。结合SVPWM调制技术,有效提升了直流侧电压利用率并显著降低输出电流谐波含量,增强了系统的整体效率与稳定性。该仿真模型适用于新能源发电、电动汽车充电系统、微电网等高性能电能变换应用场景,文档还配套提供了丰富的学习资源与技术支持渠道,便于深入研究与工程实践。; 适合人群:面向电气工程、自动化、电力电子及相关专业的高校学生、科研人员以及从事新能源、智能电网、电力传动等领域研发工作的工程师;尤其适合已具备自动控制理论、电力电子变换技术和MATLAB/Simulink仿真基础的专业人士进一步深化学习与应用。; 使用场景及目标:①深入理解PWM整流器的工作机理及其双闭环控制系统的架构设计;②掌握VOC控制与SVPWM调制的协同工作机制,提升系统动静态响应性能;③支撑科研课题、课程设计、毕业设计或实际工程项目中的整流器控制系统开发与验证;④作为高级电能变换技术的学习范例,促进对现代电力电子系统控制策略的综合理解与创新能力培养。; 阅读建议:建议结合文中提供的百度网盘链接与公众号资源,下载完整的Simulink仿真模型进行实操演练,在MATLAB环境中调整控制器参数并观察仿真结果,深入剖析控制逻辑与系统响应特性;同时可参考同系列资源如PI双闭环控制、电网不平衡工况下的控制策略等案例,开展对比分析与拓展研究,全面提升系统建模与控制设计的综合能力。

Cocos2dx 3.0 过渡篇 (二十一)自从Label有了freeType做靠山以后...

cocos2dx 3.0版本之前,我们一直都是用CCLabelTTF,CCLabelBMFont,CCLabelAtlas来创建文本标签,但是!3.0版本放出来后...看到这里你心里是不是又颤抖了一下?别害怕嘛,我要说的是:3.0版本出来后这些标签也都是还可以用的啦,只是说我们有了更好的选择。 cocos2dx3.0添加了一种新的文本标签,这种标签不同的地方有:使用freetype来使它

u013321328的专栏 971

远红外热传感器阵列 (32x24 RES) MLX90640ESF-BAA/BAB

Melexis MLX90640是一款小体积、低成本的完全校准的32x24像素红外阵列,采用行业标准,带数字接口。3.其工作温度范围为 -40°C 至 85°C,可测量的物体温度范围为 -40°C 至 300°C。该红外传感器在整个测量范围内保持高精度水平,可提供 ±1°C 的典型目标物体温度精度。2.这款 32x24 像素的器件适用于安全和便利应用,包括防火系统、智能楼宇、智能照明、IP/监控摄像机、HVAC 设备和车辆座椅占用检测。1.工作温度范围为 -40 至 85°C,可在严苛的工业环境中部署。

Summit__的博客 1999

RM3100应用笔记驱动程序SPI接口

PNI磁传感器套件RM3100磁传感器套件由2个Sen-XY-f(pn13104)地磁传感器,1个Sen-Z-f(pn13101)地磁传感器和MagI2C(pn13156)控制芯片组成,能够实现三维空间的磁场大小测量。

AIoT技术栈的博客 4923

基于卷积神经网络的密集人群估计/人群计数算法/Yolov4行人检测【内含教程和踩坑】

面向本科毕业设计,对人群密度估计的研究流程进行概述,旨在帮助小白从零开始了解人群估计算法。

weixin_43594279的博客 2万+

Spine动画在Unity里卡顿、闪烁、排序错乱?这些性能优化与渲染问题一次讲清

本文深入解析了Spine动画在Unity中常见的卡顿、闪烁和排序错乱问题,提供了全面的性能优化与渲染解决方案。从性能瓶颈诊断到材质合并、动态合批优化,再到层级错乱与Alpha闪烁的处理,帮助开发者提升动画表现和运行效率。特别针对Unity和Spine的协同工作进行了详细的技术探讨。

weixin_29967445的博客 379

Freetype的使用

freetype,truetype

JOEL的专栏 8319

Xilinx同步FIFO IP核的两种读模式对比:Standard vs FWFT(附Vivado仿真代码)

本文深入解析Xilinx同步FIFO IP核的两种读模式——Standard与FWFT,通过时序仿真和Vivado代码示例对比其性能差异。Standard模式适合严格流水线设计,而FWFT模式在低延迟场景表现更优。文章包含详细的testbench搭建指南和性能实测数据,帮助FPGA工程师优化数据流设计。

table的专栏 346

【第三只眼:Oracle通过归档日志查看系统的业务高峰sql】

根据oracle归档的业务高峰量,查找业务sql,进行优化

霍然的专栏 578

SimCC: a Simple Coordinate Classification Perspective for Human Pose Estimation 阅读笔记

近几年,高性能的2D热图法在人体姿态估计(HPE)领域独领风骚。但2D热图法中长期存在的量化误差导致了几个常见的缺点:1) 对低分辨率输入的性能有限;2) 需要多个高代价上采样层恢复特征图分辨率以提高定位精度;3) 需采用额外的后处理来减少量化误差。为解决这些问题,我们旨在探索一种全新的方案 SimCC,它将HPE重新定义为水平和垂直方向坐标的两个分类任务。

AnZhiJiaShu's blog 5263

【数据结构】期末考试复习(考点+例题)

1.线性表定义及其存储实现:顺序表和链接表,优缺点分析(顺序存储可随 机访问,链式存储可灵活利用空间),相关操作的时间复杂度。 2.链表的插入删除操作 3.两种特殊的线性表及其应用:栈、队列 4.栈、队列上的(插入/删除)操作及其特点 5.循环队列满和空的条件 6.能够定义线性表、栈、队列的数据存储结构,能够实现相关操作的算法并 分析时间复杂度(例如插入、删除及其它应用等) 7.理解线性结构的应用( 如根据要求能灵活定义线性表结构,能根据线性表 的插入、删除操作解决实际问题) 二叉树基本概念与性质(高

Molly 的博客 9366

Cocos2dx 3.0 -- 有freeType做靠山的Label

楼主 :发表于: 2014-04-08 11:30   发自: Web Page 倒序阅读   只看楼主   小 中 大 Cocos2dx 3.0 -- 有freeType做靠山的Label    cocos2dx 3.0版本之前,我们一直都是用CCLabelTTF,CCLabelBMFont,CCLabelAtlas来创建文本标签,但

枫月紫恋的专栏 508

【异常】OpenClaw认证 Please carry the API secret key in the ‘Authorization‘ field of the request header

OpenClaw助手Agent因401认证异常导致业务中断的排查方案。该异常由大模型API鉴权全量失败触发,主要根因包括API凭证配置错误、密钥过期、账号权限不足或请求格式不规范。解决方案分四级:优先校验并修正API密钥;排查账号状态与调用权限;检查请求格式规范;最后排查网络或服务商问题。建议建立密钥生命周期管理机制,定期监控额度,使用专用API密钥以规避类似问题。该异常属于凭证配置类故障,不影响系统稳定性。

奶爸的编程之路,也就一周冷个三天 464

静态代码审计插件 snyk 使用教程

静态代码审计插件 snyk 使用教程

SHELLCODE_8BIT的博客 2002

cocos2dx3.0的label字体去描边

近日一直被3.0的字体描边所困扰,在安卓手机下字体没问题,挺好看,但是在iphone手机上显示特别不清晰,一直很怪异的感觉,尤其是白色的label,后来我同事兼师父将底层改了下,貌似cocos2dx3.2及以后就不存在这个问题了。        方法:找到项目/cocos2d/cocos/2d/platform目录下的       CCDevice.h文件   的静态gettexturedata

破晓前的彷徨 2048

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

9.cc.Label组件使用详解

1. cc.Label cc.Label是显示文字的组件; cc.Label属性面板: String: 文本显示的内容; Horiznotal: 水平对齐的方式: 左 右 居中; Vertial: 上, 下, 居中, 字与行的排版 Font Size: 字体大小; LineHeight: 每行的高度; OverFlow:文字...

qaz540411484的专栏 1336

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

用FreeType实现矢量字体的粗体、斜体、描边、阴影效果[转]

前言: Freetype是一个跨平台、开源的字体渲染器,网上很多文章介绍,本人就不啰嗦了。本文重点在于实现文章标题所属的各种效果,不是Freetype的基本使用方法介绍文档,所以对于Freetype不熟悉的同学们请先学习下Freetype的基本用法,才可以使用本文中所提及的方法。 正文: 用FreeType实现矢量字体的粗体、斜体、描边、阴影效果不是一件容易的事,本人认为皆因Freety...

diexianxia7643的博客 391

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Cocos2dx 3.6 CCLable enableShadow error.

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33973600的博客 321

Cocos2d-x ——CCLabel 文本标签简介

CCLabel就是一个标签,一般只是单纯用来显示文字,比如游戏介绍、得分、名称等等。          CCLabelTTF 、 CCLabelAtlas 、CCLabeIBMFont 都是继承自CCLabelProtocol 。         父类:CCLabelProtocol只提供了两个方法:getString()和setString(),作用分别是获取CCLabel中的内容,

u012220823的专栏 803

cocos2dx 3.x Label使用

cocos2dx cc.label字体颜色在3.x中,Label支持四种方式的标签创建。并新增了阴影Shadow、轮廓Outline、发光Glow效果的支持。还支持文字内容的行间距、文字间距、自动换行的设置。 > 创建系统原生字体API : createWithSystemFont > 创建TTF             : createWithTTF       (原LabelTTF

u012861978的专栏 1万+

设置DevExpress.XtraGrid.GridControl的标题文本居中和单元格文本居中

标题文本居中:选中Run Designer->View--->Appearance--->HeaderPanel--->TextOptions--->HAlignment属性设置为Center 2:设置单元格的文本居中选中Run Designer->View--->Appearance--->Row--->TextOptions--->HAlignment属性设置为Center 设置好了 之后效果如下: ...

baidu_38995168的博客 2377

cocos2d-x 利用CCLabelTTF制作文字描边与阴影效果的实现方法

欢迎各位童鞋转载,转载请注明出处:http://blog.csdn.net/song_hui_xiang 作者新浪微博:http://weibo.com/u/3168848533 作者腾讯微博:http://t.qq.com/song_huixiang .h文件 #ifndef __HELLOWORLD_SCENE_H__ #define __HELLOWORLD_SCEN

song_hui_xiang 2万+

cocos2dx lua 笔记

今天说下cocos2dx 的 Lable 这个家伙用的还是比较多的重点来看下它的几个常用的属性 1,描边 lable:enableOutline(cc.c4b(255,0,0,255),5) 荧光的效果,distanceFieldEnabled需要设置为true,outlineSize为0 lable:enableGlow(cc.c4b(255,0,0,255));阴影效果

zhangguangtao1207的专栏 774
上一篇: CCClippingNode详解
下一篇: 图文并茂使用CocosBuilder制作Cocos2D游戏 分享0
linuxheik
博客等级 码龄15年 865粉丝 135原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值