1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
| // class CC_DLL Label : public SpriteBatchNode, public LabelProtocol { /** * 字體設置 * - setSystemFontName : 字體(字體名字、字體文件) * - setSystemFontSize : 字體大小 * - setString : 字符串內容 * - setTextColor : 文字內容顏色 **/ //設置System Font類型的字體(字體名字、字體文件) //設置System Font類型的字體大小 //請不要用於其他Label類型!(TTF、CharMap、BMFont) virtual void setSystemFontName( const std::string& systemFont); virtual void setSystemFontSize( float fontSize); virtual const std::string& getSystemFontName() const { return _systemFont;} virtual float getSystemFontSize() const { return _systemFontSize;} //改變字符串內容並重新渲染 //註:如果你沒有為Label設置TTF/BMFont/CharMap,會產生很大的開銷 virtual void setString( const std::string& text) override; virtual const std::string& getString() const override { return _originalUTF8String; } //設置文字顏色,僅支持TTF和System Font //註:區別 Node節點的顏色 // Node ::setColor : Color3B // Label::setTextColor : Color4B virtual void setTextColor( const Color4B &color); const Color4B& getTextColor() const { return _textColor; } /** * 獲取Label的某個字符 * - getLetter * - 不支持System Font **/ //不支持System Font virtual Sprite* getLetter( int lettetIndex); /** * 文字渲染效果 * - Shadow : 陰影 * - Outline : 輪廓,僅支持TTF * - Glow : 發光,僅支持TTF **/ //陰影Shadow(陰影顏色,相對Label的偏移,模糊度) //註: 其中blurRadius在3.2中並未實現 virtual void enableShadow( const Color4B& shadowColor = Color4B::BLACK, const Size &offset = Size(2,-2), int blurRadius = 0); //輪廓Outline,僅支持TTF(輪廓顏色,輪廓粗細) virtual void enableOutline( const Color4B& outlineColor, int outlineSize = -1); //發光Glow,僅支持TTF virtual void enableGlow( const Color4B& glowColor); //取消陰影/輪廓/發光渲染效果 virtual void disableEffect(); /** * 對齊方式 * > TextHAlignment : 水平對齊方式 * - TextHAlignment:LEFT : 左對齊 * - TextHAlignment:CENTER : 居中對齊,默認 * - TextHAlignment:RIGHT : 右對齊 * > TextVAlignment : 垂直對齊方式 * - TextVAlignment::TOP : 頂部,默認 * - TextVAlignment::CENTER : 中心 * - TextVAlignment::BOTTOM : 底部 **/ //設置對齊方式 void setAlignment(TextHAlignment hAlignment) { setAlignment(hAlignment,_vAlignment);} void setAlignment(TextHAlignment hAlignment,TextVAlignment vAlignment); TextHAlignment getTextAlignment() const { return _hAlignment;} //設置水平對齊方式 void setHorizontalAlignment(TextHAlignment hAlignment) { setAlignment(hAlignment,_vAlignment); } TextHAlignment getHorizontalAlignment() const { return _hAlignment; } //設置垂直對齊方式 void setVerticalAlignment(TextVAlignment vAlignment) { setAlignment(_hAlignment,vAlignment); } TextVAlignment getVerticalAlignment() const { return _vAlignment; } /** * Label尺寸大小 * - setLineBreakWithoutSpace : 開啟自動換行功能 * - setMaxLineWidth : 文字內容的最大行寬 * - setWidth : Label尺寸大小,寬 * - setHeight : Label尺寸大小,高 * - setDimensions : Label尺寸大小 **/ //是否開啟自動換行功能 void setLineBreakWithoutSpace( bool breakWithoutSpace); //最大行寬,內容超過MaxLineWidth,就會自動換行 //前提條件: 僅在width==0時,起作用。 // > width == 0; // > setMaxLineWidth(lineWidth); // > setLineBreakWithoutSpace(true); //它的效果與下面是類似的. // > setWidth(lineWidth); // > setLineBreakWithoutSpace(true); //只是width==0時,就無法設置文本的對齊方式了. void setMaxLineWidth(unsigned int maxLineWidth); unsigned int getMaxLineWidth() { return _maxLineWidth;} //設置Label的尺寸大小 //可以理解為Label的文本框大小 //當setLineBreakWithoutSpace(true)時,內容超過width,會自動換行 //並且內容支持文本的對齊方式 //註:設置尺寸大小,使用的是setDimensions,而不是setContentSize ! void setWidth(unsigned int width) { setDimensions(width,_labelHeight); } void setHeight(unsigned int height){ setDimensions(_labelWidth,height); } void setDimensions(unsigned int width,unsigned int height); unsigned int getWidth() const { return _labelWidth; } unsigned int getHeight() const { return _labelHeight; } const Size& getDimensions() const { return _labelDimensions; } /** * v3.2 新增 * - setLineHeight : 設置行間距 * - setAdditionalKerning : 設置文字間距 * - getStringLength : 字符串內容長度 */ //設置行間距,不支持system font void setLineHeight( float height); float getLineHeight() const ; //設置文字間距,不支持system font void setAdditionalKerning( float space); float getAdditionalKerning() const ; //獲取Label的字符串內容長度 int getStringLength() const ; /** * 重寫Node父類的方法 * - setBlendFunc : 混合模式 * - setScale : 放縮字體大小 * - addChild : 添加子節點 * - getDescription : 顯示Label的描述 **/ //設置顏色混合模式 virtual void setBlendFunc( const BlendFunc &blendFunc) override; //放縮字體大小(一般用於CharMap、BMFont) virtual void setScale( float scale) override; virtual void setScaleX( float scaleX) override; virtual void setScaleY( float scaleY) override; virtual float getScaleX() const override; virtual float getScaleY() const override; //添加子節點 virtual void addChild(Node * child, int zOrder=0, int tag=0) override; virtual void sortAllChildren() override; //Label描述 virtual std::string getDescription() const override; }; // |
1
2
3
4
5
6
7
8
9
10
11
12
| // Label* lb = Label::createWithTTF( "123abc" , "fonts/Marker Felt.ttf" , 50); lb->setPosition(visibleSize / 2); this ->addChild(lb); lb->enableShadow(Color4B::GREEN, Size(10, 10)); //陰影 lb->enableOutline(Color4B::RED, 3); //輪廓 //lb->enableGlow(Color4B::GREEN); //發光 //取消陰影、輪廓、發光效果 //lb->disableEffect(); // |
1
2
3
4
| // lb->setLineBreakWithoutSpace( true ); lb->setMaxLineWidth(120); //最大寬度120 // |
1
2
3
4
5
| // lb->setLineBreakWithoutSpace( true ); lb->setWidth(80); //設置Label尺寸寬80 lb->setMaxLineWidth(120); //設置了Label width,這個就無效了 // |
1
2
3
4
| // lb->setLineHeight(80); lb->setAdditionalKerning(10); // |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| // Label* lb = Label::createWithTTF( "123abc" , "fonts/Marker Felt.ttf" , 50); lb->setPosition(visibleSize / 2); this ->addChild(lb); //獲取字符串總長度,length = 6 CCLOG( "%d" , lb->getStringLength()); //獲取第1個字符 Sprite* letter1 = lb->getLetter(1); letter1->setColor(Color3B::GREEN); //設置顏色 letter1->setScale(2.0f); //放縮 //獲取第4個字符 Sprite* letter4 = lb->getLetter(4); letter4->setColor(Color3B::RED); //設置顏色 letter4->runAction(RepeatForever::create(RotateBy::create(1.0f, 90))); //執行旋轉動作 // |
沒有留言:
張貼留言