PuzzleSDK
UIImageViewTest.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 "UIImageViewTest.h"
26
28using namespace cocos2d::ui;
29
30UIImageViewTests::UIImageViewTests()
31{
38}
39
40// UIImageViewTest
41
43{
44 if (UIScene::init())
45 {
46 Size widgetSize = _widget->getContentSize();
47
48 Text* alert = Text::create("ImageView", "fonts/Marker Felt.ttf", 30);
49 alert->setColor(Color3B(159, 168, 176));
50 alert->setPosition(Vec2(widgetSize.width / 2.0f,
51 widgetSize.height / 2.0f - alert->getContentSize().height * 1.75f));
52
53 _uiLayer->addChild(alert);
54
55 // Create the imageview
56 ImageView* imageView = ImageView::create("cocosui/ccicon.png");
57 imageView->setPosition(Vec2(widgetSize.width / 2.0f,
58 widgetSize.height / 2.0f));
59
60 _uiLayer->addChild(imageView);
61
62 _image = imageView;
63
64 TTFConfig ttfConfig("fonts/arial.ttf", 15);
65 auto label1 = Label::createWithTTF(ttfConfig, "Print Resources");
66 auto item1 = MenuItemLabel::create(label1, CC_CALLBACK_1(UIImageViewTest::printWidgetResources, this));
67 item1->setPosition(Vec2(VisibleRect::left().x + 60, VisibleRect::bottom().y + item1->getContentSize().height * 3));
68 auto pMenu1 = Menu::create(item1, nullptr);
69 pMenu1->setPosition(Vec2(0.0f, 0.0f));
70 this->addChild(pMenu1, 10);
71
72 return true;
73 }
74 return false;
75}
76
77void UIImageViewTest::printWidgetResources(cocos2d::Ref* sender)
78{
79 cocos2d::ResourceData textureFile = _image->getRenderFile();
80 CCLOG("textureFile Name : %s, Type: %d", textureFile.file.c_str(), textureFile.type);
81}
82
83// UIImageViewTest_Scale9
84
86{
87 if (UIScene::init())
88 {
89 Size widgetSize = _widget->getContentSize();
90
91 Text* alert = Text::create("ImageView scale9 render", "fonts/Marker Felt.ttf", 26);
92 alert->setColor(Color3B(159, 168, 176));
93 alert->setPosition(Vec2(widgetSize.width / 2.0f,
94 widgetSize.height / 2.0f - alert->getContentSize().height * 2.125f));
95
96 _uiLayer->addChild(alert);
97
98 // Create the imageview
99 ImageView* imageView = ImageView::create("cocosui/buttonHighlighted.png");
100 imageView->setScale9Enabled(true);
101 imageView->setContentSize(Size(200, 115));
102 imageView->setPosition(Vec2(widgetSize.width / 2.0f - 100,
103 widgetSize.height / 2.0f));
104
105 _uiLayer->addChild(imageView);
106
107 auto imageCopy = imageView->clone();
108 imageCopy->setPosition(Vec2(widgetSize.width / 2.0f + 100,
109 widgetSize.height / 2.0f));
110 _uiLayer->addChild(imageCopy);
111
112 return true;
113 }
114 return false;
115}
116
117// UIImageViewTest_Scale9_State_Change
118
120{
121 if (UIScene::init())
122 {
123 Size widgetSize = _widget->getContentSize();
124
125 Text* alert = Text::create("Click The Image", "fonts/Marker Felt.ttf", 26);
126 alert->setColor(Color3B(159, 168, 176));
127 alert->setPosition(Vec2(widgetSize.width / 2.0f,
128 widgetSize.height / 2.0f - alert->getContentSize().height * 2.125f));
129
130 _uiLayer->addChild(alert);
131
132 // Create the imageview
133 ImageView* imageView = ImageView::create("cocosui/ccicon.png");
134 imageView->ignoreContentAdaptWithSize(false);
135 imageView->setScale9Enabled(true);
136 imageView->setContentSize(Size(100.0f, 100.0f));
137 imageView->setCapInsets(Rect(20.0f,20.0f,20.0f,20.0f));
138 imageView->setPosition(Vec2(widgetSize.width / 2.0f,
139 widgetSize.height / 2.0f));
140
141 imageView->setTouchEnabled(true);
142 imageView->addTouchEventListener([=](Ref* sender, Widget::TouchEventType type){
143 if (type == Widget::TouchEventType::ENDED) {
144 if (imageView->isScale9Enabled())
145 {
146 imageView->setScale9Enabled(false);
147 }
148 else
149 imageView->setScale9Enabled(true);
150 }
151 });
152
153 _uiLayer->addChild(imageView);
154
155 return true;
156 }
157 return false;
158}
159
160
161// UIImageViewTest_ContentSize
162
164{
165 if (UIScene::init())
166 {
167 Size widgetSize = _widget->getContentSize();
168
169 Text* alert = Text::create("ImageView ContentSize Change", "fonts/Marker Felt.ttf", 26);
170 alert->setColor(Color3B(159, 168, 176));
171 alert->setPosition(Vec2(widgetSize.width / 2.0f,
172 widgetSize.height / 2.0f - alert->getContentSize().height * 2.125f));
173
174 _uiLayer->addChild(alert);
175
176 Text *status = Text::create("child ImageView position percent", "fonts/Marker Felt.ttf", 16);
177 status->setColor(Color3B::RED);
178 status->setPosition(Vec2(widgetSize.width/2, widgetSize.height/2 + 80));
179 _uiLayer->addChild(status,20);
180
181 // Create the imageview
182 ImageView* imageView = ImageView::create("cocosui/buttonHighlighted.png");
183 imageView->setScale9Enabled(true);
184 imageView->setContentSize(Size(200.0f, 80.0f));
185 imageView->setPosition(Vec2(widgetSize.width / 2.0f,
186 widgetSize.height / 2.0f ));
187
188
189 ImageView* imageViewChild = ImageView::create("cocosui/buttonHighlighted.png");
190 imageViewChild->setScale9Enabled(true);
191 imageViewChild->setSizeType(Widget::SizeType::PERCENT);
192 imageViewChild->setPositionType(Widget::PositionType::PERCENT);
193 imageViewChild->setSizePercent(Vec2::ANCHOR_MIDDLE);
194 imageViewChild->setPositionPercent(Vec2::ANCHOR_MIDDLE);
195 imageViewChild->setPosition(Vec2(widgetSize.width / 2.0f,
196 widgetSize.height / 2.0f));
197
198 ImageView* imageViewChild2 = ImageView::create("cocosui/buttonHighlighted.png");
199 imageViewChild2->setScale9Enabled(true);
200 imageViewChild2->setSizeType(Widget::SizeType::PERCENT);
201 imageViewChild2->setPositionType(Widget::PositionType::PERCENT);
202 imageViewChild2->setSizePercent(Vec2::ANCHOR_MIDDLE);
203 imageViewChild2->setPositionPercent(Vec2::ANCHOR_MIDDLE);
204 imageViewChild->addChild(imageViewChild2);
205
206
207 imageView->addChild(imageViewChild);
208
209 imageView->setTouchEnabled(true);
210 imageView->addTouchEventListener([=](Ref* sender, Widget::TouchEventType type){
211 if (type == Widget::TouchEventType::ENDED) {
212 float width = CCRANDOM_0_1() * 200 + 50;
213 float height = CCRANDOM_0_1() * 80 + 30;
214 imageView->setContentSize(Size(width, height));
215
216 imageViewChild->setPositionPercent(Vec2(CCRANDOM_0_1(), CCRANDOM_0_1()));
217 status->setString(StringUtils::format("child ImageView position percent: %f, %f",
218 imageViewChild->getPositionPercent().x, imageViewChild->getPositionPercent().y));
219 }
220 });
221
222 _uiLayer->addChild(imageView);
223
224 return true;
225 }
226 return false;
227}
228
229
230// UIImageViewFlipTest
231
233{
234 if (UIScene::init())
235 {
236 SpriteFrameCache::getInstance()->addSpriteFramesWithFile("Images/blocks9ss.plist");
237 Size widgetSize = _widget->getContentSize();
238
239 Text* alert = Text::create("ImageView flip test", "fonts/Marker Felt.ttf", 26);
240 alert->setColor(Color3B(159, 168, 176));
241 alert->setPosition(Vec2(widgetSize.width / 2.0f,
242 widgetSize.height / 2.0f - alert->getContentSize().height * 2.125f));
243
244 _uiLayer->addChild(alert);
245
246 // Create the imageview
247 ImageView* imageView = ImageView::create("blocks9r.png", Widget::TextureResType::PLIST);
248 imageView->setScale9Enabled(true);
249 imageView->setContentSize(Size(250, 115));
250 imageView->setFlippedX(true);
251 imageView->setScale(0.5);
252 imageView->ignoreContentAdaptWithSize(false);
253 imageView->setPosition(Vec2(widgetSize.width / 2.0f,
254 widgetSize.height / 2.0f));
255
256 _uiLayer->addChild(imageView);
257
258 auto toggleButton = Button::create();
259 toggleButton->setTitleText("Toggle FlipX");
260 toggleButton->setPosition(imageView->getPosition() + Vec2(-50.0f, - imageView->getContentSize().height/2 - 20));
261 this->addChild(toggleButton);
262 toggleButton->addClickEventListener([=](Ref*){
263 imageView->setFlippedX(!imageView->isFlippedX());
264 });
265
266 auto toggleScale9 = Button::create();
267 toggleScale9->setTitleText("Toggle Scale9");
268 toggleScale9->setPosition(imageView->getPosition() + Vec2(+50.0f, - imageView->getContentSize().height/2- 20));
269 this->addChild(toggleScale9);
270 toggleScale9->addClickEventListener([=](Ref*){
271 imageView->setScale9Enabled(!imageView->isScale9Enabled());
272 //after switching scale9, you must call setContentSize to keep the size not change
273 imageView->setContentSize(Size(250, 115));
274 });
275
276 return true;
277 }
278 return false;
279}
280
281
282// UIImageViewIssue12249Test
283
285{
286 if (UIScene::init())
287 {
288 SpriteFrameCache::getInstance()->addSpriteFramesWithFile("Images/blocks9ss.plist");
289 Size widgetSize = _widget->getContentSize();
290
291 Text* alert = Text::create("UIImageViewIssue12249Test", "fonts/Marker Felt.ttf", 26);
292 alert->setColor(Color3B(159, 168, 176));
293 alert->setPosition(Vec2(widgetSize.width / 2.0f,
294 widgetSize.height / 2.0f - alert->getContentSize().height * 2.125f));
295
296 _uiLayer->addChild(alert);
297
298 // Create the imageview
299 ImageView* imageView = ImageView::create("blocks9r.png", Widget::TextureResType::PLIST);
300 imageView->setScale9Enabled(true);
301 imageView->setContentSize(Size(250, imageView->getContentSize().height * 2));
302 imageView->setFlippedX(true);
303 imageView->setScale(0.5);
304 imageView->setPosition(Vec2(widgetSize.width / 2.0f - 80,
305 widgetSize.height / 2.0f));
306
307 _uiLayer->addChild(imageView);
308
309 ImageView* imageView2 = ImageView::create();
310 imageView2->setScale9Enabled(true);
311 imageView2->loadTexture("blocks9r.png", Widget::TextureResType::PLIST);
312 imageView2->setContentSize(Size(250, imageView2->getContentSize().height * 2));
313 imageView2->setFlippedX(true);
314 imageView2->setScale(0.5);
315 imageView2->setPosition(Vec2(widgetSize.width / 2.0f + 80,
316 widgetSize.height / 2.0f));
317
318 _uiLayer->addChild(imageView2);
319
320
321 return true;
322 }
323 return false;
324}
325
#define ADD_TEST_CASE(__className__)
Definition: BaseTest.h:211
USING_NS_CC
virtual bool init() override
virtual bool init() override
virtual bool init() override
virtual bool init() override
void printWidgetResources(cocos2d::Ref *sender)
virtual bool init() override
cocos2d::ui::ImageView * _image
cocos2d::Layer * _uiLayer
Definition: UIScene.h:44
virtual bool init() override
Definition: UIScene.cpp:46
cocos2d::ui::Layout * _widget
Definition: UIScene.h:45
static cocos2d::Vec2 bottom()
Definition: VisibleRect.cpp:63
static cocos2d::Vec2 left()
Definition: VisibleRect.cpp:45