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 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 //土豪標籤(有熒光)
};</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)創建
複製代碼
|
當然了,也可以用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。這篇博文內容雖比較簡單,但卻是極耗精力的....