PuzzleSDK
TransitionsTest.cpp
浏览该文件的文档.
1/****************************************************************************
2 Copyright (c) 2012 cocos2d-x.org
3 Copyright (c) 2013-2016 Chukong Technologies Inc.
4 Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd.
5
6 http://www.cocos2d-x.org
7
8 Permission is hereby granted, free of charge, to any person obtaining a copy
9 of this software and associated documentation files (the "Software"), to deal
10 in the Software without restriction, including without limitation the rights
11 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12 copies of the Software, and to permit persons to whom the Software is
13 furnished to do so, subject to the following conditions:
14
15 The above copyright notice and this permission notice shall be included in
16 all copies or substantial portions of the Software.
17
18 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24 THE SOFTWARE.
25 ****************************************************************************/
26
27#include "TransitionsTest.h"
28#include "../testResource.h"
29
31
32#define TRANSITION_DURATION (1.2f)
33
34class FadeWhiteTransition : public TransitionFade
35{
36public:
37 static TransitionScene* create(float t, Scene* s)
38 {
39 return TransitionFade::create(t, s, Color3B::WHITE);
40 }
41};
42
43class FlipXLeftOver : public TransitionFlipX
44{
45public:
46 static TransitionScene* create(float t, Scene* s)
47 {
48 return TransitionFlipX::create(t, s, TransitionScene::Orientation::LEFT_OVER);
49 }
50};
51
52class FlipXRightOver : public TransitionFlipX
53{
54public:
55 static TransitionScene* create(float t, Scene* s)
56 {
57 return TransitionFlipX::create(t, s, TransitionScene::Orientation::RIGHT_OVER);
58 }
59};
60
61class FlipYUpOver : public TransitionFlipY
62{
63public:
64 static TransitionScene* create(float t, Scene* s)
65 {
66 return TransitionFlipY::create(t, s, TransitionScene::Orientation::UP_OVER);
67 }
68};
69
70class FlipYDownOver : public TransitionFlipY
71{
72public:
73 static TransitionScene* create(float t, Scene* s)
74 {
75 return TransitionFlipY::create(t, s, TransitionScene::Orientation::DOWN_OVER);
76 }
77};
78
79class FlipAngularLeftOver : public TransitionFlipAngular
80{
81public:
82 static TransitionScene* create(float t, Scene* s)
83 {
84 return TransitionFlipAngular::create(t, s, TransitionScene::Orientation::LEFT_OVER);
85 }
86};
87
88class FlipAngularRightOver : public TransitionFlipAngular
89{
90public:
91 static TransitionScene* create(float t, Scene* s)
92 {
93 return TransitionFlipAngular::create(t, s, TransitionScene::Orientation::RIGHT_OVER);
94 }
95};
96
97class ZoomFlipXLeftOver : public TransitionZoomFlipX
98{
99public:
100 static TransitionScene* create(float t, Scene* s)
101 {
102 return TransitionZoomFlipX::create(t, s, TransitionScene::Orientation::LEFT_OVER);
103 }
104};
105
106class ZoomFlipXRightOver : public TransitionZoomFlipX
107{
108public:
109 static TransitionScene* create(float t, Scene* s)
110 {
111 return TransitionZoomFlipX::create(t, s, TransitionScene::Orientation::RIGHT_OVER);
112 }
113};
114
115class ZoomFlipYUpOver : public TransitionZoomFlipY
116{
117public:
118 static TransitionScene* create(float t, Scene* s)
119 {
120 return TransitionZoomFlipY::create(t, s, TransitionScene::Orientation::UP_OVER);
121
122 }
123};
124
125class ZoomFlipYDownOver : public TransitionZoomFlipY
126{
127public:
128 static TransitionScene* create(float t, Scene* s)
129 {
130 return TransitionZoomFlipY::create(t, s, TransitionScene::Orientation::DOWN_OVER);
131 }
132};
133
134class ZoomFlipAngularLeftOver : public TransitionZoomFlipAngular
135{
136public:
137 static TransitionScene* create(float t, Scene* s)
138 {
139 return TransitionZoomFlipAngular::create(t, s, TransitionScene::Orientation::LEFT_OVER);
140 }
141};
142
143class ZoomFlipAngularRightOver : public TransitionZoomFlipAngular
144{
145public:
146 static TransitionScene* create(float t, Scene* s)
147 {
148 return TransitionZoomFlipAngular::create(t, s, TransitionScene::Orientation::RIGHT_OVER);
149 }
150};
151
152class PageTransitionForward : public TransitionPageTurn
153{
154public:
155 static TransitionScene* create(float t, Scene* s)
156 {
157 return TransitionPageTurn::create(t, s, false);
158 }
159};
160
161class PageTransitionBackward : public TransitionPageTurn
162{
163public:
164 static TransitionScene* create(float t, Scene* s)
165 {
166 return TransitionPageTurn::create(t, s, true);
167 }
168};
169
170#define STRINGIFY(x) #x
171
172#define TRANS(__className__) { \
173 [](float t, Scene* s){ return __className__::create(t,s);}, \
174 STRINGIFY(__className__), \
175 }
177 std::function<TransitionScene*(float t, Scene* s)> function;
178 const char * name;
179} transitions[] = {
180 TRANS(TransitionJumpZoom),
181 TRANS(TransitionProgressRadialCCW),
182 TRANS(TransitionProgressRadialCW),
183 TRANS(TransitionProgressHorizontal),
184 TRANS(TransitionProgressVertical),
185 TRANS(TransitionProgressInOut),
186 TRANS(TransitionProgressOutIn),
187
188 TRANS(TransitionCrossFade),
189
192 TRANS(TransitionFadeTR),
193 TRANS(TransitionFadeBL),
194 TRANS(TransitionFadeUp),
195 TRANS(TransitionFadeDown),
196
197 TRANS(TransitionTurnOffTiles),
198
199 TRANS(TransitionSplitRows),
200 TRANS(TransitionSplitCols),
201
202 TRANS(TransitionFade),
204
211
218
219 TRANS(TransitionShrinkGrow),
220 TRANS(TransitionRotoZoom),
221
222 TRANS(TransitionMoveInL),
223 TRANS(TransitionMoveInR),
224 TRANS(TransitionMoveInT),
225 TRANS(TransitionMoveInB),
226
227 TRANS(TransitionSlideInL),
228 TRANS(TransitionSlideInR),
229 TRANS(TransitionSlideInT),
230 TRANS(TransitionSlideInB),
232
233TransitionsTests::TransitionsTests()
234{
235 int sceneIndex = 0;
236
237 for (auto& test : transitions)
238 {
239 addTestCase(test.name, [sceneIndex](){
240 auto scene = TransitionsTest::create();
241 // fix bug #486, without setDepthTest(false), FlipX,Y will flickers
242 Director::getInstance()->getRenderer()->setDepthTest(false);
243
244 if (sceneIndex % 2)
245 {
246 scene->addChild(TestLayer2::create(transitions[sceneIndex].name));
247 }
248 else
249 {
250 scene->addChild(TestLayer1::create(transitions[sceneIndex].name));
251 }
252
253 return transitions[sceneIndex].function(TRANSITION_DURATION, scene);
254 });
255
256 sceneIndex++;
257 }
258}
259
260TestLayer1* TestLayer1::create(const std::string& transitionName)
261{
262 auto layer = new (std::nothrow) TestLayer1(transitionName);
263 if (layer && layer->init())
264 {
265 layer->autorelease();
266 }
267 else
268 {
269 delete layer;
270 layer = nullptr;
271 }
272
273 return layer;
274}
275
276TestLayer1::TestLayer1(const std::string& transitionName)
277{
278 float x,y;
279
280 auto size = Director::getInstance()->getWinSize();
281 x = size.width;
282 y = size.height;
283
284 auto bg1 = Sprite::create(s_back1);
285 bg1->setPosition( Vec2(size.width/2, size.height/2) );
286 addChild(bg1, -1);
287
288 auto title = Label::createWithTTF(transitionName, "fonts/Thonburi.ttf", 32);
289 addChild(title);
290 title->setColor( Color3B(255,32,32) );
291 title->setPosition( Vec2(x/2, y-100) );
292
293 auto label = Label::createWithTTF("SCENE 1", "fonts/Marker Felt.ttf", 38);
294 label->setColor( Color3B(16,16,255));
295 label->setPosition( Vec2(x/2,y/2));
296 addChild( label);
297
298 schedule( CC_SCHEDULE_SELECTOR(TestLayer1::step), 1.0f);
299}
300
302{
303
304}
305
306void TestLayer1::step(float dt)
307{
308
309}
310
312{
313 Layer::onEnter();
314 log("Scene 1 onEnter");
315}
316
318{
319 Layer::onEnterTransitionDidFinish();
320 log("Scene 1: onEnterTransitionDidFinish");
321}
322
324{
325 Layer::onExitTransitionDidStart();
326 log("Scene 1: onExitTransitionDidStart");
327}
328
330{
331 Layer::onExit();
332 Director::getInstance()->getRenderer()->setDepthTest(false);
333 log("Scene 1 onExit");
334}
335
336TestLayer2* TestLayer2::create(const std::string& transitionName)
337{
338 auto layer = new (std::nothrow) TestLayer2(transitionName);
339 if (layer && layer->init())
340 {
341 layer->autorelease();
342 }
343 else
344 {
345 delete layer;
346 layer = nullptr;
347 }
348
349 return layer;
350}
351
352TestLayer2::TestLayer2(const std::string& transitionName)
353{
354 float x,y;
355
356 auto size = Director::getInstance()->getWinSize();
357 x = size.width;
358 y = size.height;
359
360 auto bg1 = Sprite::create(s_back2);
361 bg1->setPosition( Vec2(size.width/2, size.height/2) );
362 addChild(bg1, -1);
363
364 auto title = Label::createWithTTF(transitionName, "fonts/Thonburi.ttf", 32);
365 addChild(title);
366 title->setColor( Color3B(255,32,32) );
367 title->setPosition( Vec2(x/2, y-100) );
368
369 auto label = Label::createWithTTF("SCENE 2", "fonts/Marker Felt.ttf", 38);
370 label->setColor( Color3B(16,16,255));
371 label->setPosition( Vec2(x/2,y/2));
372 addChild( label);
373
374 schedule(CC_SCHEDULE_SELECTOR(TestLayer2::step), 1.0f);
375}
376
378{
379
380}
381
382void TestLayer2::step(float dt)
383{
384
385}
386
388{
389 Layer::onEnter();
390 log("Scene 2 onEnter");
391}
392
394{
395 Layer::onEnterTransitionDidFinish();
396 log("Scene 2: onEnterTransitionDidFinish");
397}
398
400{
401 Layer::onExitTransitionDidStart();
402 log("Scene 2: onExitTransitionDidStart");
403}
404
406{
407 Layer::onExit();
408 Director::getInstance()->getRenderer()->setDepthTest(false);
409 log("Scene 2 onExit");
410}
#define TRANSITION_DURATION
#define TRANS(__className__)
struct _transitions transitions[]
USING_NS_CC
static TransitionScene * create(float t, Scene *s)
static TransitionScene * create(float t, Scene *s)
static TransitionScene * create(float t, Scene *s)
static TransitionScene * create(float t, Scene *s)
static TransitionScene * create(float t, Scene *s)
static TransitionScene * create(float t, Scene *s)
static TransitionScene * create(float t, Scene *s)
static TransitionScene * create(float t, Scene *s)
static TransitionScene * create(float t, Scene *s)
static TestLayer1 * create(const std::string &transitionName)
virtual void onExitTransitionDidStart() override
void step(float dt)
virtual void onExit() override
virtual void onEnter() override
virtual void onEnterTransitionDidFinish() override
TestLayer1(const std::string &transitionName)
virtual void onExit() override
virtual void onExitTransitionDidStart() override
virtual void onEnter() override
static TestLayer2 * create(const std::string &transitionName)
virtual void onEnterTransitionDidFinish() override
TestLayer2(const std::string &transitionName)
void step(float dt)
static TransitionScene * create(float t, Scene *s)
static TransitionScene * create(float t, Scene *s)
static TransitionScene * create(float t, Scene *s)
static TransitionScene * create(float t, Scene *s)
static TransitionScene * create(float t, Scene *s)
static TransitionScene * create(float t, Scene *s)
std::function< TransitionScene *(float t, Scene *s)> function
const char * name
static const char s_back1[]
Definition: testResource.h:39
static const char s_back2[]
Definition: testResource.h:40