cocos2dx3.0添加了一种新的文本标签,这种标签不同的地方有: 使用freetype来使它在不同的平台上有相同的视觉效果;由于使用更快的缓存代理,它的渲染也将更加快速;同时它还提供了绘边、阴影等特性。
所以因为Label,我决定离开LabelTTF和LabelBMFont(这个开头你猜到了么?)
---------------------------------------------------
常用的接口一览(因为很多接口都与LabelTTFT等一样,所以就列一些我所了解的“异类”)
<pre class="brush:cpp; toolbar: true; auto-links: false;">//创建普通的文本标签,效果和CCLabelTTF::create(...);一样。TTFConfig是什么?下面会介绍
static Label * create(const std::string& text,const std::string& fontName,float fontSize,
const Size& dimensions = Size::ZERO,TextHAlignment hAlignment = TextHAlignment::LEFT,
TextVAlignment vAlignment = TextVAlignment::TOP);
//通过读取TTFConfig配置的方式创建标签,
static Label* createWithTTF(const TTFConfig& ttfConfig,const std::string& text,TextHAlignment alignment = TextHAlignment::LEFT,int lineWidth = 0);
//使用.fnt的方式创建标签,类似CCLabelBMFont:create();
static Label* createWithBMFont(const std::string& bmfontFilePath,
const TextHAlignment& alignment = TextHAlignment::LEFT,int lineWidth = 0,
const Point& imageOffset = Point::ZERO);
//使用.png的方式创建标签,类似CCLabelAtlas::create();
static Label * createWithCharMap(const std::string& charMapFile,int itemWidth,int itemHeight,int startCharMap);
virtual void enableShadow(const Color3B& shadowColor = Color3B::BLACK,const Size &offset = Size(2,-2),float opacity = 0.75f,int blurRadius = 0);
virtual void enableOutline(const Color4B& outlineColor,int outlineSize = -1);//只支持TTF
virtual void enableGlow(const Color3B& glowColor);//只支持 TTF
virtual void disableEffect();//取消所有特效
//特效的种类有一下四种:
enum class LabelEffect {
NORMAL,//普通标签(纯粹的、脱离了低级趣味的label)
OUTLINE,//文艺标签(有描边)
SHADOW,//2B标签 (有阴影)
GLOW //土豪标签(有荧光)
};</pre> 稍微提一下一个新东西:TTFConfig
<pre class="brush:cpp; toolbar: true; auto-links: false;">//TTFConfig 是一个结构体,里面包含了你要创建一个ttf的label常用配置,如下所示
typedef struct _ttfConfig
{
std::string fontFilePath; //文件路径
int fontSize; //字体大小,默认12
GlyphCollection glyphs; //使用的字符集,默认DYNAMIC
const char *customGlyphs; //呵呵
bool distanceFieldEnabled; //我对这个的理解是:是否让文字显得紧凑?默认为false
int outlineSize; //字体描边的大小,默认为0
//构造函数
...
//注意:当outlineSize初始化的值大于0时,distanceFieldEnabled则为false
}TTFConfig;
//GlyphCollection有四种类型:
enum class GlyphCollection {
DYNAMIC,
NEHE,
ASCII,
CUSTOM
};</pre> 下面简单介绍Label的用法
1、使用.ttf
1)创建
复制代码
@H_404_188@
|
当然了,也可以用Label创建普通的标签,效果和用CCLabelTTF::create()的一样
复制代码
|
2)另字体看起来紧凑点,也就是设置distanceFieldEnabled = true
直接修改config里的distanceFieldEnabled,方式如下:
复制代码
|
3)设置glow(荧光)效果,(我也不知道该怎么描述glow这词...)
复制代码
|
4)设置描边
复制代码
|
效果如图所示。注意, 使用描边效果后,distanceFieldEnabled 将变成 false ,这也意味着在有描边的情况下是显示不了荧光效果的(我想太多了...)
5)设置阴影
复制代码
|
2、使用.fnt 的label
1)创建
复制代码
|
[attachment=67602]
2)设置阴影(描边和荧光只能用在.ttf 上)
复制代码
|
效果如图,可以与上图对比一下。
[attachment=67603]
3、使用.png
加入我们有这么一张图,使用方法如下:
[attachment=67604]
1)创建
复制代码 |
[attachment=67605]
2)设置阴影
复制代码
|
[attachment=67606]
4、取消所有特效
复制代码
|
恩,就介绍到这里。具体的用法可以参考testCpp。 这篇博文内容虽比较简单,但却是极耗精力的.... 原文链接:https://www.f2er.com/cocos2dx/346566.html