//创建普通的文本标签,效果和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 std::string& text,
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 //土豪标签(有荧光)
};
//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
};
以上转载自
Label的使用例子
TTFConfig config("fonts/Marker Felt.ttf", 30, GlyphCollection::DYNAMIC, nullptr, false);
TTFConfig config2("fonts/Marker Felt.ttf",30,GlyphCollection::DYNAMIC, nullptr, true);
auto label = Label::createWithTTF(config, "ceshi", TextHAlignment::LEFT);
label->setPosition(Point(300, 500));
label->enableShadow(Color4B::RED, Size(2, -2), 0.2);//设置阴影
this->addChild(label,2);
auto label2 = Label::createWithTTF(config, "ceshi2", TextHAlignment::LEFT);
label2->setPosition(Point(300, 600));
label2->enableGlow(Color4B::GREEN); //设置荧光效果
label2->enableOutline(Color4B(255, 125, 0, 255), 8);//描边,开启了描边,荧光效果就没有了,注意,使用描边效果后,distanceFieldEnabled 将变成 false
this->addChild(label2, 2);
auto label3 = Label::createWithCharMap("fonts/constFont.jpg", 30, 40,'/');
label3->setPosition(Point(300, 700));
label3->setString("/5");
this->addChild(label3, 2);