axmol/core/2d/CCTransition.h

1063 lines
28 KiB
C
Raw Normal View History

/****************************************************************************
Copyright (c) 2009-2010 Ricardo Quesada
Copyright (c) 2010-2012 cocos2d-x.org
Copyright (c) 2011 Zynga Inc.
Copyright (c) 2013-2016 Chukong Technologies Inc.
Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd.
2022-01-04 12:36:20 +08:00
https://adxeproject.github.io/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
#ifndef __CCTRANSITION_H__
#define __CCTRANSITION_H__
Squashed commit of the following: commit c16dcfaaea0922039aad05bce1f4efed18e04871 Author: Ricardo Quesada <ricardoquesada@gmail.com> Date: Wed Apr 30 19:05:18 2014 -0700 more linux fixes commit 1553795976c9090a1b46deb53d12910fe0676008 Author: Ricardo Quesada <ricardoquesada@gmail.com> Date: Wed Apr 30 19:04:04 2014 -0700 more linux fixes commit 1e43a8cabff33cbf25aa5eb5412f53a878222d83 Author: Ricardo Quesada <ricardoquesada@gmail.com> Date: Wed Apr 30 19:02:07 2014 -0700 fixes linux isuses commit 723a445dd6411f91846da2b801248ad8298174f1 Author: Ricardo Quesada <ricardoquesada@gmail.com> Date: Wed Apr 30 18:58:50 2014 -0700 more linux fixes commit 533c8025e794fc76cef02f396b3a93b3d7f4cfc8 Author: Ricardo Quesada <ricardoquesada@gmail.com> Date: Wed Apr 30 18:57:33 2014 -0700 more linux fixes commit 4ba1e84959670bcbf044f18d1c0d4b3cb3be4090 Author: Ricardo Quesada <ricardoquesada@gmail.com> Date: Wed Apr 30 18:53:43 2014 -0700 more linux fixes commit 1f8e011f306a47ed4134224e5e349929201f0539 Author: Ricardo Quesada <ricardoquesada@gmail.com> Date: Wed Apr 30 18:49:28 2014 -0700 more linux fixes commit 3e2033100822ff6d532a1b4f012337491dc11920 Author: Ricardo Quesada <ricardoquesada@gmail.com> Date: Wed Apr 30 18:47:43 2014 -0700 more linux fixes commit 2e708863c75fd032f1b2396dfdf1d31f7a62b713 Author: Ricardo Quesada <ricardoquesada@gmail.com> Date: Wed Apr 30 18:46:00 2014 -0700 more linux fixes commit 861b5b92a6efd4de7b926c20d636ce9d749b293f Author: Ricardo Quesada <ricardoquesada@gmail.com> Date: Wed Apr 30 18:43:15 2014 -0700 more linux fixes commit 2a43365a0c1755e9b9cada53301be1a20adb31cf Author: Ricardo Quesada <ricardoquesada@gmail.com> Date: Wed Apr 30 18:36:06 2014 -0700 more fixes for linux commit 7d332bf911892f87c7824d2a5da7bf73ce7ec411 Author: Ricardo Quesada <ricardoquesada@gmail.com> Date: Wed Apr 30 18:35:29 2014 -0700 more fixes for linux commit f1becc17d3316dfe3678c23c9dcedb7a447d9235 Author: Ricardo Quesada <ricardoquesada@gmail.com> Date: Wed Apr 30 18:34:44 2014 -0700 more fixes for linux commit d2e5959bb0dde921dd5e73be1d8acc3b3f50e51d Author: Ricardo Quesada <ricardoquesada@gmail.com> Date: Wed Apr 30 18:33:45 2014 -0700 fixes for linux commit ad9b633c352107cf0e8b060a0e23d6e6a3f5e80f Author: Ricardo Quesada <ricardoquesada@gmail.com> Date: Wed Apr 30 18:16:48 2014 -0700 compiles on Windows commit 4425ee8e5de8f42a2d6050e4470109600dce8b5d Author: Ricardo Quesada <ricardoquesada@gmail.com> Date: Wed Apr 30 18:07:20 2014 -0700 fix builder
2014-05-01 10:09:13 +08:00
#include "2d/CCScene.h"
2012-04-18 18:43:45 +08:00
NS_CC_BEGIN
2012-06-20 18:09:11 +08:00
/**
2015-03-24 10:34:41 +08:00
* @addtogroup _2d
2012-06-20 18:09:11 +08:00
* @{
*/
2021-12-25 10:04:45 +08:00
// static creation function macro
// c/c++ don't support object creation of using class name
// so, all classes need creation method.
class ActionInterval;
class Node;
class NodeGrid;
2015-03-21 18:02:56 +08:00
/** @class TransitionEaseScene
* @brief TransitionEaseScene can ease the actions of the scene protocol.
2010-07-08 18:11:08 +08:00
@since v0.8.2
@js NA
2010-07-08 18:11:08 +08:00
*/
2021-12-25 10:04:45 +08:00
class CC_DLL TransitionEaseScene // : public Ref
2010-07-08 18:11:08 +08:00
{
public:
2015-03-21 18:02:56 +08:00
/** Constructor.
*/
virtual ~TransitionEaseScene() {}
2015-03-21 18:02:56 +08:00
/** Returns the Ease action that will be performed on a linear action.
@since v0.8.2
2015-03-21 18:02:56 +08:00
*
* @param action A given interval action.
* @return The Ease action that will be performed on a linear action.
*/
2021-12-25 10:04:45 +08:00
virtual ActionInterval* easeActionWithAction(ActionInterval* action) = 0;
2010-07-08 18:11:08 +08:00
};
2015-03-21 18:02:56 +08:00
/** @class TransitionScene
* @brief Base class for Transition scenes.
2021-12-25 10:04:45 +08:00
*/
class CC_DLL TransitionScene : public Scene
{
public:
2015-03-21 18:02:56 +08:00
/** Orientation Type used by some transitions.
*/
enum class Orientation
{
/// An horizontal orientation where the Left is nearer
LEFT_OVER = 0,
/// An horizontal orientation where the Right is nearer
RIGHT_OVER = 1,
/// A vertical orientation where the Up is nearer
UP_OVER = 0,
/// A vertical orientation where the Bottom is nearer
DOWN_OVER = 1,
};
2021-12-25 10:04:45 +08:00
2015-03-21 18:02:56 +08:00
/** Creates a base transition with duration and incoming scene.
*
* @param t Duration time, in seconds.
* @param scene A given scene.
* @return A autoreleased TransitionScene object.
*/
2021-12-25 10:04:45 +08:00
static TransitionScene* create(float t, Scene* scene);
2010-07-08 18:11:08 +08:00
2015-03-21 18:02:56 +08:00
/** Called after the transition finishes.
*/
void finish();
2010-07-08 18:11:08 +08:00
2015-03-21 18:02:56 +08:00
/** Used by some transitions to hide the outer scene.
*/
void hideOutShowIn();
2021-12-25 10:04:45 +08:00
Scene* getInScene() const { return _inScene; }
float getDuration() const { return _duration; }
//
// Overrides
//
2021-12-25 10:04:45 +08:00
virtual void draw(Renderer* renderer, const Mat4& transform, uint32_t flags) override;
virtual void onEnter() override;
virtual void onExit() override;
virtual void cleanup() override;
2021-12-25 10:04:45 +08:00
TransitionScene();
virtual ~TransitionScene();
/** initializes a transition with duration and incoming scene */
2021-12-25 10:04:45 +08:00
bool initWithDuration(float t, Scene* scene);
protected:
virtual void sceneOrder();
2012-06-08 13:55:28 +08:00
void setNewScene(float dt);
2021-12-25 10:04:45 +08:00
Scene* _inScene;
Scene* _outScene;
float _duration;
bool _isInSceneOnTop;
bool _isSendCleanupToScene;
private:
CC_DISALLOW_COPY_AND_ASSIGN(TransitionScene);
};
2015-03-21 18:02:56 +08:00
/** @class TransitionSceneOriented
* @brief A Transition that supports orientation like.
* Possible orientation: LeftOver, RightOver, UpOver, DownOver
*/
class CC_DLL TransitionSceneOriented : public TransitionScene
2010-07-08 18:11:08 +08:00
{
public:
2015-03-21 18:02:56 +08:00
/** Creates a transition with duration, incoming scene and orientation.
2021-12-25 10:04:45 +08:00
*
2015-03-21 18:02:56 +08:00
* @param t Duration time, in seconds.
* @param scene A given scene.
* @param orientation A given orientation: LeftOver, RightOver, UpOver, DownOver.
* @return A autoreleased TransitionSceneOriented object.
*/
2021-12-25 10:04:45 +08:00
static TransitionSceneOriented* create(float t, Scene* scene, Orientation orientation);
TransitionSceneOriented();
virtual ~TransitionSceneOriented();
/** initializes a transition with duration and incoming scene */
2021-12-25 10:04:45 +08:00
bool initWithDuration(float t, Scene* scene, Orientation orientation);
protected:
Orientation _orientation;
private:
CC_DISALLOW_COPY_AND_ASSIGN(TransitionSceneOriented);
};
2015-03-21 18:02:56 +08:00
/** @class TransitionRotoZoom
* @brief TransitionRotoZoom:
2021-12-25 10:04:45 +08:00
Rotate and zoom out the outgoing scene, and then rotate and zoom in the incoming
2010-07-08 18:11:08 +08:00
*/
class CC_DLL TransitionRotoZoom : public TransitionScene
2010-07-08 18:11:08 +08:00
{
public:
2015-03-21 18:02:56 +08:00
/** Creates a transition with duration and incoming scene.
*
* @param t Duration time, in seconds.
* @param scene A given scene.
* @return A autoreleased TransitionRotoZoom object.
*/
static TransitionRotoZoom* create(float t, Scene* scene);
//
// Overrides
//
virtual void onEnter() override;
TransitionRotoZoom();
virtual ~TransitionRotoZoom();
private:
CC_DISALLOW_COPY_AND_ASSIGN(TransitionRotoZoom);
2010-07-08 18:11:08 +08:00
};
2015-03-21 18:02:56 +08:00
/** @class TransitionJumpZoom
* @brief TransitionJumpZoom:
2021-12-25 10:04:45 +08:00
Zoom out and jump the outgoing scene, and then jump and zoom in the incoming
2010-07-08 18:11:08 +08:00
*/
class CC_DLL TransitionJumpZoom : public TransitionScene
2010-07-08 18:11:08 +08:00
{
public:
2015-03-21 18:02:56 +08:00
/** Creates a transition with duration and incoming scene.
*
* @param t Duration time, in seconds.
* @param scene A given scene.
* @return A autoreleased TransitionJumpZoom object.
*/
static TransitionJumpZoom* create(float t, Scene* scene);
2010-08-20 14:35:37 +08:00
//
// Overrides
//
virtual void onEnter() override;
TransitionJumpZoom();
virtual ~TransitionJumpZoom();
private:
CC_DISALLOW_COPY_AND_ASSIGN(TransitionJumpZoom);
2010-07-08 18:11:08 +08:00
};
2015-03-21 18:02:56 +08:00
/** @class TransitionMoveInL
* @brief TransitionMoveInL:
2010-07-08 18:11:08 +08:00
Move in from to the left the incoming scene.
*/
class CC_DLL TransitionMoveInL : public TransitionScene, public TransitionEaseScene
2010-07-08 18:11:08 +08:00
{
public:
2015-03-21 18:02:56 +08:00
/** Creates a transition with duration and incoming scene.
*
* @param t Duration time, in seconds.
* @param scene A given scene.
* @return A autoreleased TransitionMoveInL object.
*/
static TransitionMoveInL* create(float t, Scene* scene);
2021-12-25 10:04:45 +08:00
/** Returns the action that will be performed.
*
2015-03-21 18:02:56 +08:00
* @return The action that will be performed.
*/
virtual ActionInterval* action();
2021-12-25 10:04:45 +08:00
virtual ActionInterval* easeActionWithAction(ActionInterval* action) override;
//
// Overrides
//
virtual void onEnter() override;
TransitionMoveInL();
virtual ~TransitionMoveInL();
protected:
/** initializes the scenes */
virtual void initScenes();
private:
CC_DISALLOW_COPY_AND_ASSIGN(TransitionMoveInL);
2010-07-08 18:11:08 +08:00
};
2015-03-21 18:02:56 +08:00
/** @class TransitionMoveInR
* @brief TransitionMoveInR:
2010-07-08 18:11:08 +08:00
Move in from to the right the incoming scene.
*/
class CC_DLL TransitionMoveInR : public TransitionMoveInL
2010-07-08 18:11:08 +08:00
{
public:
2015-03-21 18:02:56 +08:00
/** Creates a transition with duration and incoming scene.
*
* @param t Duration time, in seconds.
* @param scene A given scene.
* @return A autoreleased TransitionMoveInR object.
*/
static TransitionMoveInR* create(float t, Scene* scene);
TransitionMoveInR();
virtual ~TransitionMoveInR();
protected:
virtual void initScenes();
private:
CC_DISALLOW_COPY_AND_ASSIGN(TransitionMoveInR);
2010-07-08 18:11:08 +08:00
};
2015-03-21 18:02:56 +08:00
/** @class TransitionMoveInT
* @brief TransitionMoveInT:
2010-07-08 18:11:08 +08:00
Move in from to the top the incoming scene.
*/
2021-12-25 10:04:45 +08:00
class CC_DLL TransitionMoveInT : public TransitionMoveInL
2010-07-08 18:11:08 +08:00
{
public:
2015-03-21 18:02:56 +08:00
/** Creates a transition with duration and incoming scene.
*
* @param t Duration time, in seconds.
* @param scene A given scene.
* @return A autoreleased TransitionMoveInT object.
*/
static TransitionMoveInT* create(float t, Scene* scene);
TransitionMoveInT();
virtual ~TransitionMoveInT();
protected:
virtual void initScenes();
private:
CC_DISALLOW_COPY_AND_ASSIGN(TransitionMoveInT);
2010-07-08 18:11:08 +08:00
};
2015-03-21 18:02:56 +08:00
/** @class TransitionMoveInB
* @brief TransitionMoveInB:
2010-07-08 18:11:08 +08:00
Move in from to the bottom the incoming scene.
*/
class CC_DLL TransitionMoveInB : public TransitionMoveInL
2010-07-08 18:11:08 +08:00
{
public:
2015-03-21 18:02:56 +08:00
/** Creates a transition with duration and incoming scene.
*
* @param t Duration time, in seconds.
* @param scene A given scene.
* @return A autoreleased TransitionMoveInB object.
*/
static TransitionMoveInB* create(float t, Scene* scene);
TransitionMoveInB();
virtual ~TransitionMoveInB();
protected:
virtual void initScenes();
private:
CC_DISALLOW_COPY_AND_ASSIGN(TransitionMoveInB);
2010-07-08 18:11:08 +08:00
};
2015-03-21 18:02:56 +08:00
/** @class TransitionSlideInL
* @brief TransitionSlideInL:
2010-07-08 18:11:08 +08:00
Slide in the incoming scene from the left border.
*/
class CC_DLL TransitionSlideInL : public TransitionScene, public TransitionEaseScene
2010-07-08 18:11:08 +08:00
{
public:
2015-03-21 18:02:56 +08:00
/** Creates a transition with duration and incoming scene.
*
* @param t Duration time, in seconds.
* @param scene A given scene.
* @return A autoreleased TransitionSlideInL object.
*/
static TransitionSlideInL* create(float t, Scene* scene);
2021-12-25 10:04:45 +08:00
virtual ActionInterval* easeActionWithAction(ActionInterval* action) override;
2015-03-21 18:02:56 +08:00
/** Returns the action that will be performed by the incoming and outgoing scene.
*
* @return The action that will be performed by the incoming and outgoing scene.
*/
virtual ActionInterval* action();
//
// Overrides
//
virtual void onEnter() override;
TransitionSlideInL();
virtual ~TransitionSlideInL();
protected:
/** initializes the scenes */
virtual void initScenes();
virtual void sceneOrder() override;
private:
CC_DISALLOW_COPY_AND_ASSIGN(TransitionSlideInL);
2010-07-08 18:11:08 +08:00
};
2015-03-21 18:02:56 +08:00
/** @class TransitionSlideInR
*@brief TransitionSlideInR:
2010-07-08 18:11:08 +08:00
Slide in the incoming scene from the right border.
*/
2021-12-25 10:04:45 +08:00
class CC_DLL TransitionSlideInR : public TransitionSlideInL
2010-07-08 18:11:08 +08:00
{
public:
2015-03-21 18:02:56 +08:00
/** Creates a transition with duration and incoming scene.
*
* @param t Duration time, in seconds.
* @param scene A given scene.
* @return A autoreleased TransitionSlideInR object.
*/
static TransitionSlideInR* create(float t, Scene* scene);
2015-03-21 18:02:56 +08:00
/** Returns the action that will be performed by the incoming and outgoing scene. */
virtual ActionInterval* action() override;
TransitionSlideInR();
virtual ~TransitionSlideInR();
protected:
/** initializes the scenes */
virtual void initScenes() override;
2010-08-20 14:35:37 +08:00
virtual void sceneOrder() override;
private:
CC_DISALLOW_COPY_AND_ASSIGN(TransitionSlideInR);
2010-07-08 18:11:08 +08:00
};
2015-03-21 18:02:56 +08:00
/** @class TransitionSlideInB
* @brief TransitionSlideInB:
2010-07-08 18:11:08 +08:00
Slide in the incoming scene from the bottom border.
*/
class CC_DLL TransitionSlideInB : public TransitionSlideInL
2010-07-08 18:11:08 +08:00
{
public:
2015-03-21 18:02:56 +08:00
/** Creates a transition with duration and incoming scene.
*
* @param t Duration time, in seconds.
* @param scene A given scene.
* @return A autoreleased TransitionSlideInB object.
*/
static TransitionSlideInB* create(float t, Scene* scene);
/** returns the action that will be performed by the incoming and outgoing scene */
virtual ActionInterval* action() override;
2010-08-20 14:35:37 +08:00
TransitionSlideInB();
virtual ~TransitionSlideInB();
protected:
/** initializes the scenes */
virtual void initScenes() override;
virtual void sceneOrder() override;
private:
CC_DISALLOW_COPY_AND_ASSIGN(TransitionSlideInB);
2010-07-08 18:11:08 +08:00
};
2015-03-21 18:02:56 +08:00
/** @class TransitionSlideInT
* @brief TransitionSlideInT:
2010-07-08 18:11:08 +08:00
Slide in the incoming scene from the top border.
*/
class CC_DLL TransitionSlideInT : public TransitionSlideInL
2010-07-08 18:11:08 +08:00
{
public:
2015-03-21 18:02:56 +08:00
/** Creates a transition with duration and incoming scene.
*
* @param t Duration time, in seconds.
* @param scene A given scene.
* @return A autoreleased TransitionSlideInT object.
*/
static TransitionSlideInT* create(float t, Scene* scene);
/** returns the action that will be performed by the incoming and outgoing scene */
virtual ActionInterval* action() override;
TransitionSlideInT();
virtual ~TransitionSlideInT();
protected:
/** initializes the scenes */
virtual void initScenes() override;
2010-08-20 14:35:37 +08:00
virtual void sceneOrder() override;
private:
CC_DISALLOW_COPY_AND_ASSIGN(TransitionSlideInT);
2010-07-08 18:11:08 +08:00
};
2015-03-21 18:02:56 +08:00
/** @class TransitionShrinkGrow
2021-12-25 10:04:45 +08:00
* @brief Shrink the outgoing scene while grow the incoming scene
*/
class CC_DLL TransitionShrinkGrow : public TransitionScene, public TransitionEaseScene
2010-07-08 18:11:08 +08:00
{
public:
2015-03-21 18:02:56 +08:00
/** Creates a transition with duration and incoming scene.
*
* @param t Duration time, in seconds.
* @param scene A given scene.
* @return A autoreleased TransitionShrinkGrow object.
*/
static TransitionShrinkGrow* create(float t, Scene* scene);
//
// Overrides
//
/**
* @lua NA
*/
virtual void onEnter() override;
2021-12-25 10:04:45 +08:00
virtual ActionInterval* easeActionWithAction(ActionInterval* action) override;
TransitionShrinkGrow();
virtual ~TransitionShrinkGrow();
private:
CC_DISALLOW_COPY_AND_ASSIGN(TransitionShrinkGrow);
2010-07-08 18:11:08 +08:00
};
2015-03-21 18:02:56 +08:00
/** @class TransitionFlipX
* @brief TransitionFlipX:
2010-07-08 18:11:08 +08:00
Flips the screen horizontally.
The front face is the outgoing scene and the back face is the incoming scene.
*/
class CC_DLL TransitionFlipX : public TransitionSceneOriented
2010-07-08 18:11:08 +08:00
{
public:
2015-03-21 18:02:56 +08:00
/** Creates a transition with duration, incoming scene and orientation.
*
* @param t Duration time, in seconds.
* @param s A given scene.
* @param o A given orientation.
* @return A autoreleased TransitionFlipX object.
*/
static TransitionFlipX* create(float t, Scene* s, Orientation o);
2015-03-21 18:02:56 +08:00
/** Creates a transition with duration and incoming scene.
*
* @param t Duration time, in seconds.
* @param s A given scene.
* @return A autoreleased TransitionFlipX object.
*/
static TransitionFlipX* create(float t, Scene* s);
//
// Overrides
//
/**
* @lua NA
*/
virtual void onEnter() override;
TransitionFlipX();
virtual ~TransitionFlipX();
private:
CC_DISALLOW_COPY_AND_ASSIGN(TransitionFlipX);
2010-07-08 18:11:08 +08:00
};
2015-03-21 18:02:56 +08:00
/** @class TransitionFlipY
* @brief TransitionFlipY:
2010-07-08 18:11:08 +08:00
Flips the screen vertically.
The front face is the outgoing scene and the back face is the incoming scene.
*/
class CC_DLL TransitionFlipY : public TransitionSceneOriented
2010-07-08 18:11:08 +08:00
{
public:
2015-03-21 18:02:56 +08:00
/** Creates a transition with duration, incoming scene and orientation.
*
* @param t Duration time, in seconds.
* @param s A given scene.
* @param o A given orientation.
* @return A autoreleased TransitionFlipY object.
*/
static TransitionFlipY* create(float t, Scene* s, Orientation o);
2015-03-21 18:02:56 +08:00
/** Creates a transition with duration and incoming scene.
*
* @param t Duration time, in seconds.
* @param s A given scene.
* @return A autoreleased TransitionFlipY object.
*/
static TransitionFlipY* create(float t, Scene* s);
//
// Overrides
//
/**
* @lua NA
*/
virtual void onEnter() override;
TransitionFlipY();
virtual ~TransitionFlipY();
private:
CC_DISALLOW_COPY_AND_ASSIGN(TransitionFlipY);
2010-07-08 18:11:08 +08:00
};
2015-03-21 18:02:56 +08:00
/** @class TransitionFlipAngular
* @brief TransitionFlipAngular:
2010-07-08 18:11:08 +08:00
Flips the screen half horizontally and half vertically.
The front face is the outgoing scene and the back face is the incoming scene.
*/
class CC_DLL TransitionFlipAngular : public TransitionSceneOriented
2010-07-08 18:11:08 +08:00
{
public:
2015-03-21 18:02:56 +08:00
/** Creates a transition with duration, incoming scene and orientation.
*
* @param t Duration time, in seconds.
* @param s A given scene.
* @param o A given orientation.
* @return A autoreleased TransitionFlipAngular object.
*/
static TransitionFlipAngular* create(float t, Scene* s, Orientation o);
2015-03-21 18:02:56 +08:00
/** Creates a transition with duration and incoming scene.
*
* @param t Duration time, in seconds.
* @param s A given scene.
* @return A autoreleased TransitionFlipAngular object.
*/
static TransitionFlipAngular* create(float t, Scene* s);
//
// Overrides
//
/**
* @lua NA
*/
virtual void onEnter() override;
TransitionFlipAngular();
virtual ~TransitionFlipAngular();
private:
CC_DISALLOW_COPY_AND_ASSIGN(TransitionFlipAngular);
2010-07-08 18:11:08 +08:00
};
2015-03-21 18:02:56 +08:00
/** @class TransitionZoomFlipX
* @brief TransitionZoomFlipX:
2010-07-08 18:11:08 +08:00
Flips the screen horizontally doing a zoom out/in
The front face is the outgoing scene and the back face is the incoming scene.
*/
class CC_DLL TransitionZoomFlipX : public TransitionSceneOriented
2010-07-08 18:11:08 +08:00
{
public:
2015-03-21 18:02:56 +08:00
/** Creates a transition with duration, incoming scene and orientation.
*
* @param t Duration time, in seconds.
* @param s A given scene.
* @param o A given orientation.
* @return A autoreleased TransitionZoomFlipX object.
*/
static TransitionZoomFlipX* create(float t, Scene* s, Orientation o);
2015-03-21 18:02:56 +08:00
/** Creates a transition with duration and incoming scene.
*
* @param t Duration time, in seconds.
* @param s A given scene.
* @return A autoreleased TransitionZoomFlipX object.
*/
static TransitionZoomFlipX* create(float t, Scene* s);
//
// Overrides
//
/**
* @lua NA
*/
virtual void onEnter() override;
TransitionZoomFlipX();
virtual ~TransitionZoomFlipX();
private:
CC_DISALLOW_COPY_AND_ASSIGN(TransitionZoomFlipX);
2010-07-08 18:11:08 +08:00
};
2015-03-21 18:02:56 +08:00
/** @class TransitionZoomFlipY
* @brief TransitionZoomFlipY:
2010-07-08 18:11:08 +08:00
Flips the screen vertically doing a little zooming out/in
The front face is the outgoing scene and the back face is the incoming scene.
*/
class CC_DLL TransitionZoomFlipY : public TransitionSceneOriented
2010-07-08 18:11:08 +08:00
{
public:
2015-03-21 18:02:56 +08:00
/** Creates a transition with duration, incoming scene and orientation.
*
* @param t Duration time, in seconds.
* @param s A given scene.
* @param o A given orientation.
* @return A autoreleased TransitionZoomFlipY object.
*/
static TransitionZoomFlipY* create(float t, Scene* s, Orientation o);
2015-03-21 18:02:56 +08:00
/** Creates a transition with duration and incoming scene.
*
* @param t Duration time, in seconds.
* @param s A given scene.
* @return A autoreleased TransitionZoomFlipY object.
*/
static TransitionZoomFlipY* create(float t, Scene* s);
//
// Overrides
//
/**
* @lua NA
*/
virtual void onEnter() override;
TransitionZoomFlipY();
virtual ~TransitionZoomFlipY();
private:
CC_DISALLOW_COPY_AND_ASSIGN(TransitionZoomFlipY);
2010-07-08 18:11:08 +08:00
};
2015-03-21 18:02:56 +08:00
/** @class TransitionZoomFlipAngular
* @brief TransitionZoomFlipAngular:
2010-07-08 18:11:08 +08:00
Flips the screen half horizontally and half vertically doing a little zooming out/in.
The front face is the outgoing scene and the back face is the incoming scene.
*/
class CC_DLL TransitionZoomFlipAngular : public TransitionSceneOriented
2010-07-08 18:11:08 +08:00
{
public:
2015-03-21 18:02:56 +08:00
/** Creates a transition with duration, incoming scene and orientation.
*
* @param t Duration time, in seconds.
* @param s A given scene.
* @param o A given orientation.
* @return A autoreleased TransitionZoomFlipAngular object.
*/
static TransitionZoomFlipAngular* create(float t, Scene* s, Orientation o);
2015-03-21 18:02:56 +08:00
/** Creates a transition with duration and incoming scene.
*
* @param t Duration time, in seconds.
* @param s A given scene.
* @return A autoreleased TransitionZoomFlipAngular object.
*/
static TransitionZoomFlipAngular* create(float t, Scene* s);
//
// Overrides
//
/**
* @lua NA
*/
virtual void onEnter() override;
TransitionZoomFlipAngular();
virtual ~TransitionZoomFlipAngular();
private:
CC_DISALLOW_COPY_AND_ASSIGN(TransitionZoomFlipAngular);
2010-07-08 18:11:08 +08:00
};
2015-03-21 18:02:56 +08:00
/** @class TransitionFade
* @brief TransitionFade:
2010-07-08 18:11:08 +08:00
Fade out the outgoing scene and then fade in the incoming scene.'''
*/
class CC_DLL TransitionFade : public TransitionScene
2010-07-08 18:11:08 +08:00
{
public:
2015-03-21 18:02:56 +08:00
/** Creates the transition with a duration and with an RGB color
* Example: FadeTransition::create(2, scene, Color3B(255,0,0); // red color
*
* @param duration Duration time, in seconds.
* @param scene A given scene.
* @param color A given transition color.
* @return A autoreleased TransitionFade object.
*/
static TransitionFade* create(float duration, Scene* scene, const Color3B& color);
2015-03-21 18:02:56 +08:00
/** Creates the transition with a duration.
*
* @param duration Duration time, in seconds.
* @param scene A given scene.
* @return A autoreleased TransitionFade object.
*/
static TransitionFade* create(float duration, Scene* scene);
/**
* @lua NA
*/
virtual void onEnter() override;
/**
* @lua NA
*/
virtual void onExit() override;
2021-12-25 10:04:45 +08:00
TransitionFade();
virtual ~TransitionFade();
/** initializes the transition with a duration and with an RGB color */
2021-12-25 10:04:45 +08:00
bool initWithDuration(float t, Scene* scene, const Color3B& color);
bool initWithDuration(float t, Scene* scene);
protected:
Color4B _color;
private:
CC_DISALLOW_COPY_AND_ASSIGN(TransitionFade);
2010-07-08 18:11:08 +08:00
};
class RenderTexture;
2015-03-21 18:02:56 +08:00
/** @class TransitionCrossFade
@brief TransitionCrossFade:
Cross fades two scenes using the RenderTexture object.
2010-07-08 18:11:08 +08:00
*/
class CC_DLL TransitionCrossFade : public TransitionScene
2010-07-08 18:11:08 +08:00
{
2021-12-25 10:04:45 +08:00
public:
2015-03-21 18:02:56 +08:00
/** Creates a transition with duration and incoming scene.
*
* @param t Duration time, in seconds.
* @param scene A given scene.
* @return A autoreleased TransitionCrossFade object.
*/
static TransitionCrossFade* create(float t, Scene* scene);
//
// Overrides
//
/**
* @lua NA
*/
2021-12-25 10:04:45 +08:00
virtual void draw(Renderer* renderer, const Mat4& transform, uint32_t flags) override;
/**
* @lua NA
*/
virtual void onEnter() override;
/**
* @lua NA
*/
virtual void onExit() override;
2010-08-20 14:35:37 +08:00
TransitionCrossFade();
virtual ~TransitionCrossFade();
private:
CC_DISALLOW_COPY_AND_ASSIGN(TransitionCrossFade);
2010-07-08 18:11:08 +08:00
};
2015-03-21 18:02:56 +08:00
/** @class TransitionTurnOffTiles
* @brief TransitionTurnOffTiles:
2010-07-08 18:11:08 +08:00
Turn off the tiles of the outgoing scene in random order
*/
2021-12-25 10:04:45 +08:00
class CC_DLL TransitionTurnOffTiles : public TransitionScene, public TransitionEaseScene
2010-07-08 18:11:08 +08:00
{
2021-12-25 10:04:45 +08:00
public:
2015-03-21 18:02:56 +08:00
/** Creates a transition with duration and incoming scene.
*
* @param t Duration time, in seconds.
* @param scene A given scene.
* @return A autoreleased TransitionTurnOffTiles object.
*/
static TransitionTurnOffTiles* create(float t, Scene* scene);
//
// Overrides
//
/**
* @lua NA
*/
virtual void onEnter() override;
/**
* @js NA
*/
virtual void onExit() override;
2021-12-25 10:04:45 +08:00
virtual ActionInterval* easeActionWithAction(ActionInterval* action) override;
/**
* @js NA
*/
virtual void draw(Renderer* renderer, const Mat4& transform, uint32_t flags) override;
TransitionTurnOffTiles();
virtual ~TransitionTurnOffTiles();
protected:
virtual void sceneOrder() override;
NodeGrid* _outSceneProxy;
private:
CC_DISALLOW_COPY_AND_ASSIGN(TransitionTurnOffTiles);
2010-07-08 18:11:08 +08:00
};
2015-03-21 18:02:56 +08:00
/** @class TransitionSplitCols
* @brief TransitionSplitCols:
2010-07-08 18:11:08 +08:00
The odd columns goes upwards while the even columns goes downwards.
*/
2021-12-25 10:04:45 +08:00
class CC_DLL TransitionSplitCols : public TransitionScene, public TransitionEaseScene
2010-07-08 18:11:08 +08:00
{
public:
2015-03-21 18:02:56 +08:00
/** Creates a transition with duration and incoming scene.
*
* @param t Duration time, in seconds.
* @param scene A given scene.
* @return A autoreleased TransitionSplitCols object.
*/
static TransitionSplitCols* create(float t, Scene* scene);
2015-03-21 18:02:56 +08:00
/** Returns the action that will be performed.
*
* @return The action that will be performed.
*/
virtual ActionInterval* action();
//
// Overrides
//
/**
* @lua NA
*/
virtual void onEnter() override;
2021-12-25 10:04:45 +08:00
virtual ActionInterval* easeActionWithAction(ActionInterval* action) override;
virtual void onExit() override;
2021-12-25 10:04:45 +08:00
virtual void draw(Renderer* renderer, const Mat4& transform, uint32_t flags) override;
TransitionSplitCols();
virtual ~TransitionSplitCols();
protected:
void switchTargetToInscene();
NodeGrid* _gridProxy;
2021-12-25 10:04:45 +08:00
private:
CC_DISALLOW_COPY_AND_ASSIGN(TransitionSplitCols);
2010-07-08 18:11:08 +08:00
};
2015-03-21 18:02:56 +08:00
/** @class TransitionSplitRows
* @brief TransitionSplitRows:
2010-07-08 18:11:08 +08:00
The odd rows goes to the left while the even rows goes to the right.
*/
class CC_DLL TransitionSplitRows : public TransitionSplitCols
2010-07-08 18:11:08 +08:00
{
public:
2015-03-21 18:02:56 +08:00
/** Creates a transition with duration and incoming scene.
*
* @param t Duration time, in seconds.
* @param scene A given scene.
* @return A autoreleased TransitionSplitRows object.
*/
static TransitionSplitRows* create(float t, Scene* scene);
//
// Overrides
//
virtual ActionInterval* action() override;
TransitionSplitRows();
virtual ~TransitionSplitRows();
private:
CC_DISALLOW_COPY_AND_ASSIGN(TransitionSplitRows);
2010-07-08 18:11:08 +08:00
};
2015-03-21 18:02:56 +08:00
/** @class TransitionFadeTR
* @brief TransitionFadeTR:
2010-07-08 18:11:08 +08:00
Fade the tiles of the outgoing scene from the left-bottom corner the to top-right corner.
*/
2021-12-25 10:04:45 +08:00
class CC_DLL TransitionFadeTR : public TransitionScene, public TransitionEaseScene
2010-07-08 18:11:08 +08:00
{
public:
2015-03-21 18:02:56 +08:00
/** Creates a transition with duration and incoming scene.
*
* @param t Duration time, in seconds.
* @param scene A given scene.
* @return A autoreleased TransitionFadeTR object.
*/
static TransitionFadeTR* create(float t, Scene* scene);
2015-03-21 18:02:56 +08:00
/** Returns the action that will be performed with size.
*
* @param size A given size.
* @return The action that will be performed.
*/
2021-10-23 23:27:14 +08:00
virtual ActionInterval* actionWithSize(const Vec2& size);
2010-08-20 14:35:37 +08:00
//
// Overrides
//
/**
* @js NA
* @lua NA
*/
virtual void onEnter() override;
2021-12-25 10:04:45 +08:00
virtual ActionInterval* easeActionWithAction(ActionInterval* action) override;
virtual void onExit() override;
2021-12-25 10:04:45 +08:00
virtual void draw(Renderer* renderer, const Mat4& transform, uint32_t flags) override;
TransitionFadeTR();
virtual ~TransitionFadeTR();
protected:
virtual void sceneOrder() override;
NodeGrid* _outSceneProxy;
private:
CC_DISALLOW_COPY_AND_ASSIGN(TransitionFadeTR);
2010-07-08 18:11:08 +08:00
};
2015-03-21 18:02:56 +08:00
/** @class TransitionFadeBL
* @brief TransitionFadeBL:
2010-07-08 18:11:08 +08:00
Fade the tiles of the outgoing scene from the top-right corner to the bottom-left corner.
*/
class CC_DLL TransitionFadeBL : public TransitionFadeTR
2010-07-08 18:11:08 +08:00
{
public:
2015-03-21 18:02:56 +08:00
/** Creates a transition with duration and incoming scene.
*
* @param t Duration time, in seconds.
* @param scene A given scene.
* @return A autoreleased TransitionFadeBL object.
*/
static TransitionFadeBL* create(float t, Scene* scene);
2010-08-20 14:35:37 +08:00
//
// Overrides
//
2021-10-23 23:27:14 +08:00
virtual ActionInterval* actionWithSize(const Vec2& size) override;
TransitionFadeBL();
virtual ~TransitionFadeBL();
private:
CC_DISALLOW_COPY_AND_ASSIGN(TransitionFadeBL);
2010-07-08 18:11:08 +08:00
};
2015-03-21 18:02:56 +08:00
/** @class TransitionFadeUp
* @brief TransitionFadeUp:
2021-12-25 10:04:45 +08:00
* Fade the tiles of the outgoing scene from the bottom to the top.
*/
class CC_DLL TransitionFadeUp : public TransitionFadeTR
2010-07-08 18:11:08 +08:00
{
public:
2015-03-21 18:02:56 +08:00
/** Creates a transition with duration and incoming scene.
*
* @param t Duration time, in seconds.
* @param scene A given scene.
* @return A autoreleased TransitionFadeUp object.
*/
static TransitionFadeUp* create(float t, Scene* scene);
//
// Overrides
//
2021-10-23 23:27:14 +08:00
virtual ActionInterval* actionWithSize(const Vec2& size) override;
TransitionFadeUp();
virtual ~TransitionFadeUp();
private:
CC_DISALLOW_COPY_AND_ASSIGN(TransitionFadeUp);
2010-07-08 18:11:08 +08:00
};
2015-03-21 18:02:56 +08:00
/** @class TransitionFadeDown
* @brief TransitionFadeDown:
2021-12-25 10:04:45 +08:00
* Fade the tiles of the outgoing scene from the top to the bottom.
*/
class CC_DLL TransitionFadeDown : public TransitionFadeTR
2010-07-08 18:11:08 +08:00
{
public:
2015-03-21 18:02:56 +08:00
/** Creates a transition with duration and incoming scene.
*
* @param t Duration time, in seconds.
* @param scene A given scene.
* @return A autoreleased TransitionFadeDown object.
*/
static TransitionFadeDown* create(float t, Scene* scene);
2010-08-20 14:35:37 +08:00
//
// Overrides
//
2021-10-23 23:27:14 +08:00
virtual ActionInterval* actionWithSize(const Vec2& size) override;
TransitionFadeDown();
virtual ~TransitionFadeDown();
private:
CC_DISALLOW_COPY_AND_ASSIGN(TransitionFadeDown);
2010-07-08 18:11:08 +08:00
};
2012-04-18 18:43:45 +08:00
2015-03-24 10:34:41 +08:00
// end of _2d group
2012-06-20 18:09:11 +08:00
/// @}
2012-04-18 18:43:45 +08:00
NS_CC_END
2010-07-08 18:11:08 +08:00
2021-12-25 10:04:45 +08:00
#endif // __CCTRANSITION_H__