PuzzleSDK
UITextFieldTest.cpp
浏览该文件的文档.
1/****************************************************************************
2 Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd.
3
4 http://www.cocos2d-x.org
5
6 Permission is hereby granted, free of charge, to any person obtaining a copy
7 of this software and associated documentation files (the "Software"), to deal
8 in the Software without restriction, including without limitation the rights
9 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 copies of the Software, and to permit persons to whom the Software is
11 furnished to do so, subject to the following conditions:
12
13 The above copyright notice and this permission notice shall be included in
14 all copies or substantial portions of the Software.
15
16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 THE SOFTWARE.
23 ****************************************************************************/
24
25#include "UITextFieldTest.h"
26
28using namespace cocos2d::ui;
29
30UITextFieldTests::UITextFieldTests()
31{
39}
40
41// UITextFieldTest
43: _displayValueLabel(nullptr)
44{
45
46}
47
49{
50}
51
53{
54 if (UIScene::init())
55 {
56 Size widgetSize = _widget->getContentSize();
57
58 // Add a label in which the textfield events will be displayed
59 _displayValueLabel = Text::create("No Event","fonts/Marker Felt.ttf",32);
60 _displayValueLabel->setAnchorPoint(Vec2(0.5f, -1.0f));
61 _displayValueLabel->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f + _displayValueLabel->getContentSize().height * 1.5f));
62 _uiLayer->addChild(_displayValueLabel);
63
64 // Add the alert
65 Text* alert = Text::create("TextField","fonts/Marker Felt.ttf",30);
66 alert->setColor(Color3B(159, 168, 176));
67 alert->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.075f));
68 _uiLayer->addChild(alert);
69
70 // Create the textfield
71 TextField* textField = TextField::create("input words here","Arial",30);
72
73 textField->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f));
74 textField->addEventListener(CC_CALLBACK_2(UITextFieldTest::textFieldEvent, this));
75 _uiLayer->addChild(textField);
76
77
78 return true;
79 }
80 return false;
81}
82
83void UITextFieldTest::textFieldEvent(Ref *pSender, TextField::EventType type)
84{
85 switch (type)
86 {
87 case TextField::EventType::ATTACH_WITH_IME:
88 {
89 TextField* textField = dynamic_cast<TextField*>(pSender);
90 Size screenSize = Director::getInstance()->getWinSize();
91 textField->runAction(MoveTo::create(0.225f,
92 Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f + textField->getContentSize().height / 2.0f)));
93 _displayValueLabel->setString(StringUtils::format("attach with IME"));
94 }
95 break;
96
97 case TextField::EventType::DETACH_WITH_IME:
98 {
99 TextField* textField = dynamic_cast<TextField*>(pSender);
100 Size screenSize = Director::getInstance()->getWinSize();
101 textField->runAction(MoveTo::create(0.175f, Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f)));
102 _displayValueLabel->setString(StringUtils::format("detach with IME"));
103 }
104 break;
105
106 case TextField::EventType::INSERT_TEXT:
107 _displayValueLabel->setString(StringUtils::format("insert words"));
108 break;
109
110 case TextField::EventType::DELETE_BACKWARD:
111 _displayValueLabel->setString(StringUtils::format("delete word"));
112 break;
113
114 default:
115 break;
116 }
117}
118
119// UITextFieldTest_MaxLength
121: _displayValueLabel(nullptr)
122{
123
124}
125
127{
128}
129
131{
132 if (UIScene::init())
133 {
134 Size screenSize = Director::getInstance()->getWinSize();
135
136 // Add a label in which the textfield events will be displayed
137 _displayValueLabel = Text::create("No Event","fonts/Marker Felt.ttf",32);
138 _displayValueLabel->setAnchorPoint(Vec2(0.5f, -1.0f));
139 _displayValueLabel->setPosition(Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f + _displayValueLabel->getContentSize().height * 1.5f));
140 _uiLayer->addChild(_displayValueLabel);
141
142 // Add the alert
143 Text *alert = Text::create("TextField max length","fonts/Marker Felt.ttf",30);
144 alert->setColor(Color3B(159, 168, 176));
145 alert->setPosition(Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f - alert->getContentSize().height * 3.075f));
146 _uiLayer->addChild(alert);
147
148 // Create the textfield
149 TextField* textField = TextField::create("input words here","Arial",30);
150 textField->setMaxLengthEnabled(true);
151 textField->setMaxLength(3);
152 textField->setPosition(Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f));
153 textField->addEventListener(CC_CALLBACK_2(UITextFieldTest_MaxLength::textFieldEvent, this));
154 _uiLayer->addChild(textField);
155
156 return true;
157 }
158 return false;
159}
160
161void UITextFieldTest_MaxLength::textFieldEvent(Ref *pSender, TextField::EventType type)
162{
163 switch (type)
164 {
165 case TextField::EventType::ATTACH_WITH_IME:
166 {
167 TextField* textField = dynamic_cast<TextField*>(pSender);
168 Size screenSize = Director::getInstance()->getWinSize();
169 textField->runAction(MoveTo::create(0.225f,
170 Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f + textField->getContentSize().height / 2.0f)));
171 _displayValueLabel->setString(StringUtils::format("attach with IME max length %d", textField->getMaxLength()));
172 }
173 break;
174
175 case TextField::EventType::DETACH_WITH_IME:
176 {
177 TextField* textField = dynamic_cast<TextField*>(pSender);
178 Size screenSize = Director::getInstance()->getWinSize();
179 textField->runAction(MoveTo::create(0.175f, Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f)));
180 _displayValueLabel->setString(StringUtils::format("detach with IME max length %d", textField->getMaxLength()));
181 }
182 break;
183
184 case TextField::EventType::INSERT_TEXT:
185 {
186 TextField* textField = dynamic_cast<TextField*>(pSender);
187 _displayValueLabel->setString(StringUtils::format("insert words max length %d", textField->getMaxLength()));
188 }
189 break;
190
191 case TextField::EventType::DELETE_BACKWARD:
192 {
193 TextField* textField = dynamic_cast<TextField*>(pSender);
194 _displayValueLabel->setString(StringUtils::format("delete word max length %d", textField->getMaxLength()));
195 }
196 break;
197
198 default:
199 break;
200 }
201}
202
203// UITextFieldTest_Password
205: _displayValueLabel(nullptr)
206{
207
208}
209
211{
212}
213
215{
216 if (UIScene::init())
217 {
218 Size screenSize = Director::getInstance()->getWinSize();
219
220 // Add a label in which the textfield events will be displayed
221 _displayValueLabel = Text::create("No Event","fonts/Marker Felt.ttf",32);
222 _displayValueLabel->setAnchorPoint(Vec2(0.5f, -1.0f));
223 _displayValueLabel->setPosition(Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f + _displayValueLabel->getContentSize().height * 1.5f));
224 _uiLayer->addChild(_displayValueLabel);
225
226 // Add the alert
227 Text *alert = Text::create("TextField password","fonts/Marker Felt.ttf",30);
228 alert->setColor(Color3B(159, 168, 176));
229 alert->setPosition(Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f - alert->getContentSize().height * 3.075f));
230 _uiLayer->addChild(alert);
231
232 // Create the textfield
233 TextField* textField = TextField::create("input password here","Arial",30);
234 textField->setPasswordEnabled(true);
235 textField->setPasswordStyleText("*");
236 textField->setPosition(Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f));
237 textField->addEventListener(CC_CALLBACK_2(UITextFieldTest_Password::textFieldEvent, this));
238 _uiLayer->addChild(textField);
239
240 return true;
241 }
242 return false;
243}
244
245void UITextFieldTest_Password::textFieldEvent(Ref *pSender, TextField::EventType type)
246{
247 switch (type)
248 {
249 case TextField::EventType::ATTACH_WITH_IME:
250 {
251 TextField* textField = dynamic_cast<TextField*>(pSender);
252 Size screenSize = Director::getInstance()->getWinSize();
253 textField->runAction(MoveTo::create(0.225f,
254 Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f + textField->getContentSize().height / 2.0f)));
255 _displayValueLabel->setString(StringUtils::format("attach with IME password"));
256 }
257 break;
258
259 case TextField::EventType::DETACH_WITH_IME:
260 {
261 TextField* textField = dynamic_cast<TextField*>(pSender);
262 Size screenSize = Director::getInstance()->getWinSize();
263 textField->runAction(MoveTo::create(0.175f, Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f)));
264 _displayValueLabel->setString(StringUtils::format("detach with IME password"));
265 }
266 break;
267
268 case TextField::EventType::INSERT_TEXT:
269 _displayValueLabel->setString(StringUtils::format("insert words password"));
270 break;
271
272 case TextField::EventType::DELETE_BACKWARD:
273 _displayValueLabel->setString(StringUtils::format("delete word password"));
274 break;
275
276 default:
277 break;
278 }
279}
280
281
282// UITextFieldTest_LineWrap
284: _displayValueLabel(nullptr)
285{
286
287}
288
290{
291}
292
294{
295 if (UIScene::init())
296 {
297 Size widgetSize = _widget->getContentSize();
298
299 // Add a label in which the textfield events will be displayed
300 _displayValueLabel = Text::create("No Event","fonts/Marker Felt.ttf",30);
301 _displayValueLabel->setAnchorPoint(Vec2(0.5f, -1.0f));
302 _displayValueLabel->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f + _displayValueLabel->getContentSize().height * 1.5));
303 _uiLayer->addChild(_displayValueLabel);
304
305 // Add the alert
306 Text *alert = Text::create("TextField line wrap","fonts/Marker Felt.ttf",30);
307 alert->setColor(Color3B(159, 168, 176));
308 alert->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.075));
309 _uiLayer->addChild(alert);
310
311 // Create the textfield
312 TextField* textField = TextField::create("input words here","fonts/Marker Felt.ttf",30);
313 textField->ignoreContentAdaptWithSize(false);
314 ((Label*)(textField->getVirtualRenderer()))->setLineBreakWithoutSpace(true);
315 textField->setContentSize(Size(240.0f, 170.0f));
316 textField->setString("input words here");
317 textField->setTextHorizontalAlignment(TextHAlignment::CENTER);
318 textField->setTextVerticalAlignment(TextVAlignment::CENTER);
319 textField->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f));
320 textField->addEventListener(CC_CALLBACK_2(UITextFieldTest_LineWrap::textFieldEvent, this));
321 _uiLayer->addChild(textField);
322
323 return true;
324 }
325 return false;
326}
327
328void UITextFieldTest_LineWrap::textFieldEvent(Ref *pSender, TextField::EventType type)
329{
330 switch (type)
331 {
332 case TextField::EventType::ATTACH_WITH_IME:
333 {
334 TextField* textField = dynamic_cast<TextField*>(pSender);
335 Size widgetSize = _widget->getContentSize();
336 textField->runAction(MoveTo::create(0.225f,
337 Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f + 30)));
338 _displayValueLabel->setString(StringUtils::format("attach with IME"));
339 }
340 break;
341
342 case TextField::EventType::DETACH_WITH_IME:
343 {
344 TextField* textField = dynamic_cast<TextField*>(pSender);
345 Size screenSize = Director::getInstance()->getWinSize();
346 textField->runAction(MoveTo::create(0.175f, Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f)));
347 textField->setTextHorizontalAlignment(TextHAlignment::CENTER);
348 textField->setTextVerticalAlignment(TextVAlignment::CENTER);
349
350 _displayValueLabel->setString(StringUtils::format("detach with IME"));
351 }
352 break;
353
354 case TextField::EventType::INSERT_TEXT:
355 _displayValueLabel->setString(StringUtils::format("insert words"));
356 break;
357
358 case TextField::EventType::DELETE_BACKWARD:
359 _displayValueLabel->setString(StringUtils::format("delete word"));
360 break;
361
362 default:
363 break;
364 }
365}
366
367// UITextFieldTest_TrueTypeFont
369: _displayValueLabel(nullptr)
370{
371
372}
373
375{
376}
377
379{
380 if (UIScene::init())
381 {
382 Size widgetSize = _widget->getContentSize();
383
384 // Add a label in which the textfield events will be displayed
385 _displayValueLabel = Text::create("True Type Font Test - No Event","fonts/Marker Felt.ttf",32);
386 _displayValueLabel->setAnchorPoint(Vec2(0.5f, -1.0f));
387 _displayValueLabel->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f + _displayValueLabel->getContentSize().height * 1.5f));
388 _uiLayer->addChild(_displayValueLabel);
389
390 // Add the alert
391 Text* alert = Text::create("TextField","fonts/Marker Felt.ttf",30);
392 alert->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.075f));
393 _uiLayer->addChild(alert);
394
395 // Create the textfield
396 TextField* textField = TextField::create("input words here","fonts/A Damn Mess.ttf",30);
397
398 textField->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f));
399 textField->addEventListener(CC_CALLBACK_2(UITextFieldTest_TrueTypeFont::textFieldEvent, this));
400 _uiLayer->addChild(textField);
401
402
403 return true;
404 }
405 return false;
406}
407
408void UITextFieldTest_TrueTypeFont::textFieldEvent(Ref *pSender, TextField::EventType type)
409{
410 switch (type)
411 {
412 case TextField::EventType::ATTACH_WITH_IME:
413 {
414 TextField* textField = dynamic_cast<TextField*>(pSender);
415 Size screenSize = Director::getInstance()->getWinSize();
416 textField->runAction(MoveTo::create(0.225f,
417 Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f + textField->getContentSize().height / 2.0f)));
418 _displayValueLabel->setString(StringUtils::format("attach with IME"));
419 }
420 break;
421
422 case TextField::EventType::DETACH_WITH_IME:
423 {
424 TextField* textField = dynamic_cast<TextField*>(pSender);
425 Size screenSize = Director::getInstance()->getWinSize();
426 textField->runAction(MoveTo::create(0.175f, Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f)));
427 _displayValueLabel->setString(StringUtils::format("detach with IME"));
428 }
429 break;
430
431 case TextField::EventType::INSERT_TEXT:
432 _displayValueLabel->setString(StringUtils::format("insert words"));
433 break;
434
435 case TextField::EventType::DELETE_BACKWARD:
436 _displayValueLabel->setString(StringUtils::format("delete word"));
437 break;
438
439 default:
440 break;
441 }
442}
443
444// UITextFieldTest_BMFont
446: _displayValueLabel(nullptr)
447{
448
449}
450
452{
453}
454
456{
457 if (UIScene::init())
458 {
459 Size widgetSize = _widget->getContentSize();
460
461 // Add a label in which the textfield events will be displayed
462 _displayValueLabel = Text::create("BMFont Test - No Event","fonts/Marker Felt.ttf",32);
463 _displayValueLabel->setAnchorPoint(Vec2(0.5f, -1.0f));
464 _displayValueLabel->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f + _displayValueLabel->getContentSize().height * 1.5f));
465 _uiLayer->addChild(_displayValueLabel);
466
467 // Add the alert
468 Text* alert = Text::create("TextField","fonts/Marker Felt.ttf",30);
469 alert->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.075f));
470 _uiLayer->addChild(alert);
471
472 // Create the textfield
473 TextField* textField = TextField::create("BMFont Text","fonts/bitmapFontTest3.fnt",30);
474 textField->setCursorEnabled(true);
475 textField->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f));
476 textField->addEventListener(CC_CALLBACK_2(UITextFieldTest_BMFont::textFieldEvent, this));
477 _uiLayer->addChild(textField);
478
479 return true;
480 }
481 return false;
482}
483
484void UITextFieldTest_BMFont::textFieldEvent(Ref *pSender, TextField::EventType type)
485{
486 switch (type)
487 {
488 case TextField::EventType::ATTACH_WITH_IME:
489 {
490 TextField* textField = dynamic_cast<TextField*>(pSender);
491 Size screenSize = Director::getInstance()->getWinSize();
492 textField->runAction(MoveTo::create(0.225f,
493 Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f + textField->getContentSize().height / 2.0f)));
494 _displayValueLabel->setString(StringUtils::format("attach with IME"));
495 }
496 break;
497
498 case TextField::EventType::DETACH_WITH_IME:
499 {
500 TextField* textField = dynamic_cast<TextField*>(pSender);
501 Size screenSize = Director::getInstance()->getWinSize();
502 textField->runAction(MoveTo::create(0.175f, Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f)));
503 _displayValueLabel->setString(StringUtils::format("detach with IME"));
504 }
505 break;
506
507 case TextField::EventType::INSERT_TEXT:
508 _displayValueLabel->setString(StringUtils::format("insert words"));
509 break;
510
511 case TextField::EventType::DELETE_BACKWARD:
512 _displayValueLabel->setString(StringUtils::format("delete word"));
513 break;
514
515 default:
516 break;
517 }
518}
519
520// UITextFieldTest_PlaceHolderColor
522: _displayValueLabel(nullptr)
523{
524
525}
526
528{
529}
530
532{
533 if (UIScene::init())
534 {
535 Size widgetSize = _widget->getContentSize();
536
537 // Add a label in which the textfield events will be displayed
538 _displayValueLabel = Text::create("You should see 16.50000, 34.0000 in the output window the first time you type","fonts/Marker Felt.ttf",12);
539 _displayValueLabel->setAnchorPoint(Vec2(0.5f, -1.0f));
540 _displayValueLabel->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f + _displayValueLabel->getContentSize().height * 1.5f));
541 _uiLayer->addChild(_displayValueLabel);
542
543 // Add the alert
544 Text* alert = Text::create("TextField","fonts/Marker Felt.ttf",30);
545 alert->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.075f));
546 _uiLayer->addChild(alert);
547
548 // Create the textfield
549 TextField* textField = TextField::create("input words here","Arial",30);
550 textField->setPlaceHolder("input text here");
551 textField->setPlaceHolderColor(Color4B::GREEN);
552 textField->setTextColor(Color4B::RED);
553 textField->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f));
554 textField->addEventListener(CC_CALLBACK_2(UITextFieldTest_PlaceHolderColor::textFieldEvent, this));
555 _uiLayer->addChild(textField);
556 return true;
557 }
558 return false;
559}
560
561void UITextFieldTest_PlaceHolderColor::textFieldEvent(Ref *pSender, TextField::EventType type)
562{
563 switch (type)
564 {
565 case TextField::EventType::ATTACH_WITH_IME:
566 {
567 TextField* textField = dynamic_cast<TextField*>(pSender);
568 Size screenSize = Director::getInstance()->getWinSize();
569 textField->runAction(MoveTo::create(0.225f,
570 Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f + textField->getContentSize().height / 2.0f)));
571 _displayValueLabel->setString(StringUtils::format("attach with IME"));
572 }
573 break;
574
575 case TextField::EventType::DETACH_WITH_IME:
576 {
577 TextField* textField = dynamic_cast<TextField*>(pSender);
578 Size screenSize = Director::getInstance()->getWinSize();
579 textField->runAction(MoveTo::create(0.175f, Vec2(screenSize.width / 2.0f, screenSize.height / 2.0f)));
580 _displayValueLabel->setString(StringUtils::format("detach with IME"));
581 }
582 break;
583
584 case TextField::EventType::INSERT_TEXT:
585 {
586 _displayValueLabel->setString(StringUtils::format("insert words"));
587 CCLOG("%f, %f", dynamic_cast<TextField*>(pSender)->getContentSize().width, dynamic_cast<TextField*>(pSender)->getContentSize().height);
588 }
589 break;
590
591 case TextField::EventType::DELETE_BACKWARD:
592 _displayValueLabel->setString(StringUtils::format("delete word"));
593 break;
594
595 default:
596 break;
597 }
598}
#define ADD_TEST_CASE(__className__)
Definition: BaseTest.h:211
USING_NS_CC
cocos2d::Layer * _uiLayer
Definition: UIScene.h:44
virtual bool init() override
Definition: UIScene.cpp:46
cocos2d::ui::Layout * _widget
Definition: UIScene.h:45
cocos2d::ui::Text * _displayValueLabel
virtual bool init() override
void textFieldEvent(cocos2d::Ref *sender, cocos2d::ui::TextField::EventType type)
cocos2d::ui::Text * _displayValueLabel
virtual bool init() override
void textFieldEvent(cocos2d::Ref *sender, cocos2d::ui::TextField::EventType type)
virtual bool init() override
void textFieldEvent(cocos2d::Ref *sender, cocos2d::ui::TextField::EventType type)
cocos2d::ui::Text * _displayValueLabel
void textFieldEvent(cocos2d::Ref *sender, cocos2d::ui::TextField::EventType type)
virtual bool init() override
cocos2d::ui::Text * _displayValueLabel
void textFieldEvent(cocos2d::Ref *sender, cocos2d::ui::TextField::EventType type)
cocos2d::ui::Text * _displayValueLabel
virtual bool init() override
void textFieldEvent(cocos2d::Ref *sender, cocos2d::ui::TextField::EventType type)
cocos2d::ui::Text * _displayValueLabel
cocos2d::ui::Text * _displayValueLabel
virtual bool init() override
void textFieldEvent(cocos2d::Ref *sender, cocos2d::ui::TextField::EventType type)