PuzzleSDK
UIEditBoxTest.cpp
浏览该文件的文档.
1/****************************************************************************
2 Copyright (c) 2013-2016 Chukong Technologies Inc.
3 Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd.
4
5 http://www.cocos2d-x.org
6
7 Permission is hereby granted, free of charge, to any person obtaining a copy
8 of this software and associated documentation files (the "Software"), to deal
9 in the Software without restriction, including without limitation the rights
10 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11 copies of the Software, and to permit persons to whom the Software is
12 furnished to do so, subject to the following conditions:
13
14 The above copyright notice and this permission notice shall be included in
15 all copies or substantial portions of the Software.
16
17 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
23 THE SOFTWARE.
24 ****************************************************************************/
25
26#include "UIEditBoxTest.h"
27#include "testResource.h"
28
31using namespace cocos2d::ui;
32
33UIEditBoxTests::UIEditBoxTests()
34{
39}
40
41// UIEditBoxTest
42
44{
45 if (UIScene::init())
46 {
47 auto glview = Director::getInstance()->getOpenGLView();
48 auto visibleOrigin = glview->getVisibleOrigin();
49 auto visibleSize = glview->getVisibleSize();
50
51 auto pBg = Sprite::create("Images/HelloWorld.png");
52 pBg->setPosition(Vec2(visibleOrigin.x+visibleSize.width/2, visibleOrigin.y+visibleSize.height/2));
53 addChild(pBg);
54
55 _TTFShowEditReturn = Label::createWithSystemFont("No edit control return!", "Arial", 30);
56 _TTFShowEditReturn->setPosition(Vec2(visibleOrigin.x+visibleSize.width/2, visibleOrigin.y + visibleSize.height - 50));
57 addChild(_TTFShowEditReturn);
58
59
60 auto editBoxSize = Size(visibleSize.width - 100, visibleSize.height * 0.1);
61
62 // top
63 std::string pNormalSprite = "extensions/green_edit.png";
64 _editName = ui::EditBox::create(editBoxSize + Size(0,40), ui::Scale9Sprite::create(pNormalSprite));
65 _editName->setPosition(Vec2(visibleOrigin.x+visibleSize.width/2-50, visibleOrigin.y+visibleSize.height*3/4));
66 _editName->setFontColor(Color3B::RED);
67 _editName->setPlaceHolder("Name:");
68 _editName->setPlaceholderFontColor(Color3B::WHITE);
69 _editName->setMaxLength(8);
70 _editName->setFontSize((int)editBoxSize.height/2);
71 _editName->setText("v👐👊💝");
72 _editName->setReturnType(ui::EditBox::KeyboardReturnType::DONE);
73 _editName->setDelegate(this);
74 _editName->setVisible(true);
75 addChild(_editName);
76
77 Button* button = Button::create("cocosui/animationbuttonnormal.png",
78 "cocosui/animationbuttonpressed.png");
79 auto buttonSize = button->getContentSize();
80 button->setTitleText("Single Line");
81 button->setPosition(_editName->getPosition() + Vec2(editBoxSize.width/2 + buttonSize.width/2, 0.0f));
82 button->addClickEventListener([=](Ref* ref){
83 _editName->setInputMode(ui::EditBox::InputMode::SINGLE_LINE);
84 });
85 addChild(button);
86
87 // middle
88 _editPassword = ui::EditBox::create(Size(editBoxSize.width,
89 editBoxSize.height + 20), "extensions/orange_edit.png");
90 _editPassword->setPosition(Vec2(visibleOrigin.x+visibleSize.width/2-50, visibleOrigin.y+visibleSize.height/2));
91 _editPassword->setFontColor(Color3B::GREEN);
92 _editPassword->setPlaceHolder("Password:");
93 _editPassword->setMaxLength(6);
94 _editPassword->setInputFlag(ui::EditBox::InputFlag::PASSWORD);
95 _editPassword->setInputMode(ui::EditBox::InputMode::SINGLE_LINE);
96 _editPassword->setFontSize((int)editBoxSize.height/2);
97 _editPassword->setDelegate(this);
98 _editPassword->setVisible(true);
99 addChild(_editPassword);
100
101 auto buttonPassword = (ui::Button*)button->clone();
102 buttonPassword->setTitleText("Multiline");
103 buttonPassword->setPosition(_editPassword->getPosition() + Vec2(editBoxSize.width/2 + buttonSize.width/2, 0.0f));
104 buttonPassword->addClickEventListener([=](Ref* ref){
105 _editPassword->setInputMode(ui::EditBox::InputMode::ANY);
106 });
107 addChild(buttonPassword);
108
109 // bottom
110 // Add an intermediate Node to test scaling and content size relative to world
111 _editEmailParent = Node::create();
112// _editEmailParent->setScale(0.5);
113 _editEmailParent->setPosition(Vec2(visibleOrigin.x+visibleSize.width/2-50, visibleOrigin.y+visibleSize.height/4));
114 addChild(_editEmailParent);
115
116 auto bottomButtonSize = Size(editBoxSize.width, editBoxSize.height + 10);
117 _editEmail = ui::EditBox::create(bottomButtonSize, "extensions/yellow_edit.png");
118 _editEmail->setPlaceHolder("Email:");
119 _editEmail->setInputMode(ui::EditBox::InputMode::EMAIL_ADDRESS);
120 _editEmail->setDelegate(this);
121 _editEmail->setVisible(true);
122 _editEmailParent->addChild(_editEmail);
123 //It is required to use setFontSize and setContentSize after adding it to the hierarchy, so that native EditBox get the right size
124 _editEmail->setFontSize(30);
125 _editEmail->setContentSize(bottomButtonSize);
126
127 auto buttonEmail = (ui::Button*)button->clone();
128 buttonEmail->setTitleText("Multiline");
129 buttonEmail->setPosition(_editEmailParent->getPosition() + Vec2(editBoxSize.width/2 + buttonSize.width/2, 0.0f));
130 buttonEmail->addClickEventListener([=](Ref* ref){
131 _editEmail->setInputMode(ui::EditBox::InputMode::ANY);
132 });
133 addChild(buttonEmail);
134
135 return true;
136 }
137 return false;
138}
139
140void UIEditBoxTest::editBoxEditingDidBegin(cocos2d::ui::EditBox* editBox)
141{
142 log("editBox %p DidBegin !", editBox);
143}
144
145void UIEditBoxTest::editBoxEditingDidEndWithAction(cocos2d::ui::EditBox* editBox, cocos2d::ui::EditBoxDelegate::EditBoxEndAction action)
146{
147 log("editBox %p DidEnd with action %d!", editBox, action);
148}
149
150void UIEditBoxTest::editBoxTextChanged(cocos2d::ui::EditBox* editBox, const std::string& text)
151{
152 log("editBox %p TextChanged, text: %s ", editBox, text.c_str());
153 editBox->setText(text.c_str());
154}
155
156void UIEditBoxTest::editBoxReturn(ui::EditBox* editBox)
157{
158 log("editBox %p was returned !",editBox);
159
160 if (_editName == editBox)
161 {
162 _TTFShowEditReturn->setString("Name EditBox return !");
163 }
164 else if (_editPassword == editBox)
165 {
166 _TTFShowEditReturn->setString("Password EditBox return !");
167 }
168 else if (_editEmail == editBox)
169 {
170 _TTFShowEditReturn->setString("Email EditBox return !");
171 }
172}
173
174// UIEditBoxTestToggleVisibility
175
177{
178 if (UIScene::init())
179 {
180 auto glview = Director::getInstance()->getOpenGLView();
181 auto visibleOrigin = glview->getVisibleOrigin();
182 auto visibleSize = glview->getVisibleSize();
183
184 auto pBg = Sprite::create("Images/HelloWorld.png");
185 pBg->setPosition(Vec2(visibleOrigin.x+visibleSize.width/2, visibleOrigin.y+visibleSize.height/2));
186 addChild(pBg);
187
188 _TTFShowEditReturn = Label::createWithSystemFont("No edit control return!", "Arial", 30);
189 _TTFShowEditReturn->setPosition(Vec2(visibleOrigin.x+visibleSize.width/2, visibleOrigin.y + visibleSize.height - 50));
190 addChild(_TTFShowEditReturn);
191
192
193 auto editBoxSize = Size(visibleSize.width - 100, visibleSize.height * 0.1f);
194
195 // top
196 std::string pNormalSprite = "extensions/green_edit.png";
197 _editName = ui::EditBox::create(editBoxSize + Size(0,40), ui::Scale9Sprite::create(pNormalSprite));
198 _editName->setPosition(Vec2(visibleOrigin.x+visibleSize.width/2-50, visibleOrigin.y+visibleSize.height*3/4));
199 _editName->setFontColor(Color3B::RED);
200 _editName->setPlaceHolder("Name:");
201 _editName->setPlaceholderFontColor(Color3B::WHITE);
202 _editName->setMaxLength(8);
203 _editName->setFontSize((int)editBoxSize.height/2);
204 _editName->setText("v👐👊💝");
205 _editName->setReturnType(ui::EditBox::KeyboardReturnType::DONE);
206 _editName->setDelegate(this);
207 _editName->setVisible(true);
208 addChild(_editName);
209
210 Button* button = Button::create("cocosui/animationbuttonnormal.png",
211 "cocosui/animationbuttonpressed.png");
212 auto buttonSize = button->getContentSize();
213 button->setTitleText("Toggle Visibility");
214 button->setPosition(_editName->getPosition() + Vec2(editBoxSize.width/2 + buttonSize.width/2, 0.0f));
215 button->addClickEventListener([=](Ref* ref){
216 _editName->setVisible(!_editName->isVisible());
217 });
218 addChild(button);
219
220 // middle
221 _editPassword = ui::EditBox::create(editBoxSize, "extensions/orange_edit.png");
222 _editPassword->setPosition(Vec2(visibleOrigin.x+visibleSize.width/2-50, visibleOrigin.y+visibleSize.height/2));
223 _editPassword->setFontColor(Color3B::GREEN);
224 _editPassword->setPlaceHolder("Password:");
225 _editPassword->setMaxLength(6);
226 _editPassword->setInputFlag(ui::EditBox::InputFlag::PASSWORD);
227 _editPassword->setInputMode(ui::EditBox::InputMode::SINGLE_LINE);
228 _editPassword->setFontSize((float)editBoxSize.height/2);
229 _editPassword->setDelegate(this);
230 _editPassword->setVisible(true);
231 addChild(_editPassword);
232
233 auto buttonPassword = (ui::Button*)button->clone();
234 buttonPassword->setTitleText("Toggle Visibility");
235 buttonPassword->setPosition(_editPassword->getPosition() + Vec2(editBoxSize.width/2 + buttonSize.width/2, 0.0f));
236 buttonPassword->addClickEventListener([=](Ref* ref){
237 _editPassword->setVisible(!_editPassword->isVisible());
238 });
239 addChild(buttonPassword);
240
241 // bottom
242 // Add an intermediate Node to test scaling and content size relative to world
243 _editEmailParent = Node::create();
244 // _editEmailParent->setScale(0.5);
245 _editEmailParent->setPosition(Vec2(visibleOrigin.x+visibleSize.width/2-50, visibleOrigin.y+visibleSize.height/4));
246 addChild(_editEmailParent);
247
248 auto bottomButtonSize = Size(editBoxSize.width, editBoxSize.height + 10);
249 _editEmail = ui::EditBox::create(bottomButtonSize, "extensions/yellow_edit.png");
250 _editEmail->setPlaceHolder("Email:");
251 _editEmail->setInputMode(ui::EditBox::InputMode::EMAIL_ADDRESS);
252 _editEmail->setDelegate(this);
253 _editEmail->setVisible(true);
254 _editEmailParent->addChild(_editEmail);
255 //It is required to use setFontSize and setContentSize after adding it to the hierarchy, so that native EditBox get the right size
256 _editEmail->setFontSize(30);
257 _editEmail->setContentSize(bottomButtonSize);
258
259 auto buttonEmail = (ui::Button*)button->clone();
260 buttonEmail->setTitleText("Toggle Visibility");
261 buttonEmail->setPosition(_editEmailParent->getPosition() + Vec2(editBoxSize.width/2 + buttonSize.width/2, 0.0f));
262 buttonEmail->addClickEventListener([=](Ref* ref){
263 _editEmail->setVisible(!_editEmail->isVisible());
264 });
265 addChild(buttonEmail);
266
267 return true;
268 }
269 return false;
270}
271
273{
274 log("editBox %p DidBegin !", editBox);
275}
276
277void UIEditBoxTestToggleVisibility::editBoxTextChanged(cocos2d::ui::EditBox* editBox, const std::string& text)
278{
279 log("editBox %p TextChanged, text: %s ", editBox, text.c_str());
280}
281
283{
284 log("editBox %p was returned !",editBox);
285
286 if (_editName == editBox)
287 {
288 _TTFShowEditReturn->setString("Name EditBox return !");
289 }
290 else if (_editPassword == editBox)
291 {
292 _TTFShowEditReturn->setString("Password EditBox return !");
293 }
294 else if (_editEmail == editBox)
295 {
296 _TTFShowEditReturn->setString("Email EditBox return !");
297 }
298}
299
300// UIEditBoxTestTextHorizontalAlignment
301
303 if (!UIScene::init()) {
304 return false;
305 }
306
307 const auto glview = Director::getInstance()->getOpenGLView();
308 const auto visibleOrigin = glview->getVisibleOrigin();
309 const auto visibleSize = glview->getVisibleSize();
310 const auto editBoxSize = Size(visibleSize.width - 100, visibleSize.height * 0.1f);
311
312 const auto createEditBox = [this, editBoxSize, visibleOrigin, visibleSize](const std::string& text,
313 const TextHAlignment alignment,
314 const int position_y) {
315 ui::EditBox* editbox = ui::EditBox::create(editBoxSize + Size(0,40), ui::Scale9Sprite::create("extensions/green_edit.png"));
316 editbox->setPosition(Vec2(visibleOrigin.x+visibleSize.width/2-50, (float)position_y));
317 editbox->setFontColor(Color3B::RED);
318 editbox->setPlaceHolder(text.c_str());
319 editbox->setPlaceholderFontColor(Color3B::WHITE);
320 editbox->setPlaceholderFontSize((int)editBoxSize.height/2);
321 editbox->setFontSize((int)editBoxSize.height/2);
322 editbox->setText(text.c_str());
323 editbox->setTextHorizontalAlignment(alignment);
324 editbox->setReturnType(ui::EditBox::KeyboardReturnType::DONE);
325 addChild(editbox);
326 };
327
328 createEditBox("horizontal left text", TextHAlignment::LEFT, (int)(visibleOrigin.y+visibleSize.height*3/4));
329 createEditBox("horizontal center text", TextHAlignment::CENTER, (int)(visibleOrigin.y+visibleSize.height/2));
330 createEditBox("horizontal right text", TextHAlignment::RIGHT, (int)(visibleOrigin.y+visibleSize.height/4));
331
332 return true;
333}
334
335// UIEditBoxTestPressedAndDisabled
337 if (!UIScene::init()) {
338 return false;
339 }
340
341 auto glview = Director::getInstance()->getOpenGLView();
342 auto visibleOrigin = glview->getVisibleOrigin();
343 auto visibleSize = glview->getVisibleSize();
344 const auto editBoxSize = Size(visibleSize.width - 100, visibleSize.height * 0.1f);
345
346 ui::EditBox* editbox = ui::EditBox::create(editBoxSize + Size(0,40), "extensions/yellow_edit.png", "extensions/orange_edit.png");
347 editbox->setPosition(Vec2(visibleOrigin.x+visibleSize.width/2, visibleOrigin.y+visibleSize.height*3/4));
348 editbox->setFontColor(Color3B::GREEN);
349 editbox->setPlaceHolder("Test Pressed Image");
350 editbox->setPlaceholderFontColor(Color3B::WHITE);
351 editbox->setPlaceholderFontSize((int)editBoxSize.height/2);
352 editbox->setFontSize((int)editBoxSize.height/2);
353 editbox->setReturnType(ui::EditBox::KeyboardReturnType::DONE);
354 addChild(editbox);
355
356 editbox = ui::EditBox::create(editBoxSize + Size(0,40), "extensions/yellow_edit.png", "extensions/orange_edit.png", "extensions/green_edit.png");
357 editbox->setPosition(Vec2(visibleOrigin.x+visibleSize.width/2, visibleOrigin.y+visibleSize.height/2));
358 editbox->setFontColor(Color3B::GREEN);
359 editbox->setPlaceHolder("Test Disabled Image - green");
360 editbox->setPlaceholderFontColor(Color3B::WHITE);
361 editbox->setPlaceholderFontSize((int)editBoxSize.height/2);
362 editbox->setFontSize((int)editBoxSize.height/2);
363 editbox->setReturnType(ui::EditBox::KeyboardReturnType::DONE);
364 addChild(editbox);
365 editbox->setEnabled(false);
366
367 editbox = ui::EditBox::create(editBoxSize + Size(0,40), "extensions/yellow_edit.png");
368 editbox->setPosition(Vec2(visibleOrigin.x+visibleSize.width/2, visibleOrigin.y+visibleSize.height/4));
369 editbox->setFontColor(Color3B::GREEN);
370 editbox->setPlaceHolder("Disabled Gray effect");
371 editbox->setPlaceholderFontColor(Color3B::WHITE);
372 editbox->setPlaceholderFontSize((int)editBoxSize.height/2);
373 editbox->setFontSize((int)editBoxSize.height/2);
374 editbox->setReturnType(ui::EditBox::KeyboardReturnType::DONE);
375 addChild(editbox);
376 editbox->setEnabled(false);
377
378 return true;
379}
#define ADD_TEST_CASE(__className__)
Definition: BaseTest.h:211
USING_NS_CC_EXT
USING_NS_CC
virtual void editBoxTextChanged(cocos2d::ui::EditBox *editBox, const std::string &text) override
virtual bool init() override
cocos2d::Node * _editEmailParent
Definition: UIEditBoxTest.h:51
virtual void editBoxEditingDidEndWithAction(cocos2d::ui::EditBox *editBox, cocos2d::ui::EditBoxDelegate::EditBoxEndAction action) override
cocos2d::ui::EditBox * _editPassword
Definition: UIEditBoxTest.h:49
cocos2d::ui::EditBox * _editEmail
Definition: UIEditBoxTest.h:50
virtual void editBoxReturn(cocos2d::ui::EditBox *editBox) override
virtual void editBoxEditingDidBegin(cocos2d::ui::EditBox *editBox) override
cocos2d::ui::EditBox * _editName
Definition: UIEditBoxTest.h:48
cocos2d::Label * _TTFShowEditReturn
Definition: UIEditBoxTest.h:47
virtual bool init() override
virtual void editBoxEditingDidBegin(cocos2d::ui::EditBox *editBox) override
cocos2d::Node * _editEmailParent
Definition: UIEditBoxTest.h:71
virtual void editBoxReturn(cocos2d::ui::EditBox *editBox) override
virtual bool init() override
virtual void editBoxTextChanged(cocos2d::ui::EditBox *editBox, const std::string &text) override
cocos2d::ui::EditBox * _editName
Definition: UIEditBoxTest.h:68
cocos2d::Label * _TTFShowEditReturn
Definition: UIEditBoxTest.h:67
cocos2d::ui::EditBox * _editEmail
Definition: UIEditBoxTest.h:70
cocos2d::ui::EditBox * _editPassword
Definition: UIEditBoxTest.h:69
virtual bool init() override
Definition: UIScene.cpp:46