CCTransition
#ifndef __CCTRANSITION_H__
#define __CCTRANSITION_H__
#include "CCScene.h"
#include "ccTypes.h"
NS_CC_BEGIN
/**
* @addtogroup transition
* @{
*/
//static creation function macro
//c/c++ don't support object creation of using class name
//so, all classes need creation method.
class CCActionInterval;
class CCNode;
/** @brief CCTransitionEaseScene can ease the actions of the scene protocol.
@since v0.8.2
*/
class CC_DLL CCTransitionEaseScene// : public CCObject
{
public:
/** returns the Ease action that will be performed on a linear action.
@since v0.8.2
*/
virtual CCActionInterval * easeActionWithAction(CCActionInterval * action) = 0;
};
/** Orientation Type used by some transitions
*/
typedef enum {
/// An horizontal orientation where the Left is nearer
kCCTransitionOrientationLeftOver = 0,
/// An horizontal orientation where the Right is nearer
kCCTransitionOrientationRightOver = 1,
/// A vertical orientation where the Up is nearer
kCCTransitionOrientationUpOver = 0,
/// A vertical orientation where the Bottom is nearer
kCCTransitionOrientationDownOver = 1,
// Deprecated
// kOrientationLeftOver = kCCTransitionOrientationLeftOver,
// kOrientationRightOver = kCCTransitionOrientationRightOver,
// kOrientationUpOver = kCCTransitionOrientationUpOver,
// kOrientationDownOver = kCCTransitionOrientationDownOver,
} tOrientation;
/** @brief Base class for CCTransition scenes
*/
class CC_DLL CCTransitionScene : public CCScene
{
protected:
CCScene * m_pInScene;
CCScene * m_pOutScene;
float m_fDuration;
bool m_bIsInSceneOnTop;
bool m_bIsSendCleanupToScene;
public:
CCTransitionScene();
virtual ~CCTransitionScene();
virtual void draw();
virtual void onEnter();
virtual void onExit();
virtual void cleanup();
/** creates a base transition with duration and incoming scene */
static CCTransitionScene * create(float t, CCScene *scene);
/** initializes a transition with duration and incoming scene */
virtual bool initWithDuration(float t,CCScene* scene);
/** called after the transition finishes */
void finish(void);
/** used by some transitions to hide the outer scene */
void hideOutShowIn(void);
protected:
virtual void sceneOrder();
private:
void setNewScene(float dt);
};
/** @brief A CCTransition that supports orientation like.
* Possible orientation: LeftOver, RightOver, UpOver, DownOver
*/
class CC_DLL CCTransitionSceneOriented : public CCTransitionScene
{
protected:
tOrientation m_eOrientation;
public:
CCTransitionSceneOriented();
virtual ~CCTransitionSceneOriented();
/** creates a base transition with duration and incoming scene */
static CCTransitionSceneOriented * create(float t,CCScene* scene, tOrientation orientation);
/** initializes a transition with duration and incoming scene */
virtual bool initWithDuration(float t,CCScene* scene,tOrientation orientation);
};
/** @brief CCTransitionRotoZoom:
Rotate and zoom out the outgoing scene, and then rotate and zoom in the incoming
*/
class CC_DLL CCTransitionRotoZoom : public CCTransitionScene
{
public:
CCTransitionRotoZoom();
virtual ~CCTransitionRotoZoom();
virtual void onEnter();
static CCTransitionRotoZoom* create(float t, CCScene* scene);
};
/** @brief CCTransitionJumpZoom:
Zoom out and jump the outgoing scene, and then jump and zoom in the incoming
*/
class CC_DLL CCTransitionJumpZoom : public CCTransitionScene
{
public:
CCTransitionJumpZoom();
virtual ~CCTransitionJumpZoom();
virtual void onEnter();
static CCTransitionJumpZoom* create(float t, CCScene* scene);
};
/** @brief CCTransitionMoveInL:
Move in from to the left the incoming scene.
*/
class CC_DLL CCTransitionMoveInL : public CCTransitionScene, public CCTransitionEaseScene
{
public:
CCTransitionMoveInL();
virtual ~CCTransitionMoveInL();
/** initializes the scenes */
virtual void initScenes(void);
/** returns the action that will be performed */
virtual CCActionInterval* action(void);
virtual CCActionInterval* easeActionWithAction(CCActionInterval * action);
virtual void onEnter();
static CCTransitionMoveInL* create(float t, CCScene* scene);
};
/** @brief CCTransitionMoveInR:
Move in from to the right the incoming scene.
*/
class CC_DLL CCTransitionMoveInR : public CCTransitionMoveInL
{
public:
CCTransitionMoveInR();
virtual ~CCTransitionMoveInR();
virtual void initScenes();
static CCTransitionMoveInR* create(float t, CCScene* scene);
};
/** @brief CCTransitionMoveInT:
Move in from to the top the incoming scene.
*/
class CC_DLL CCTransitionMoveInT : public CCTransitionMoveInL
{
public:
CCTransitionMoveInT();
virtual ~CCTransitionMoveInT();
virtual void initScenes();
static CCTransitionMoveInT* create(float t, CCScene* scene);
};
/** @brief CCTransitionMoveInB:
Move in from to the bottom the incoming scene.
*/
class CC_DLL CCTransitionMoveInB : public CCTransitionMoveInL
{
public:
CCTransitionMoveInB();
virtual ~CCTransitionMoveInB();
virtual void initScenes();
static CCTransitionMoveInB* create(float t, CCScene* scene);
};
/** @brief CCTransitionSlideInL:
Slide in the incoming scene from the left border.
*/
class CC_DLL CCTransitionSlideInL : public CCTransitionScene, public CCTransitionEaseScene
{
public:
CCTransitionSlideInL();
virtual ~CCTransitionSlideInL();
/** initializes the scenes */
virtual void initScenes(void);
/** returns the action that will be performed by the incoming and outgoing scene */
virtual CCActionInterval* action(void);
virtual void onEnter();
virtual CCActionInterval* easeActionWithAction(CCActionInterval * action);
static CCTransitionSlideInL* create(float t, CCScene* scene);
protected:
virtual void sceneOrder();
};
/** @brief CCTransitionSlideInR:
Slide in the incoming scene from the right border.
*/
class CC_DLL CCTransitionSlideInR : public CCTransitionSlideInL
{
public:
CCTransitionSlideInR();
virtual ~CCTransitionSlideInR();
/** initializes the scenes */
virtual void initScenes(void);
/** returns the action that will be performed by the incoming and outgoing scene */
virtual CCActionInterval* action(void);
static CCTransitionSlideInR* create(float t, CCScene* scene);
protected:
virtual void sceneOrder();
};
/** @brief CCTransitionSlideInB:
Slide in the incoming scene from the bottom border.
*/
class CC_DLL CCTransitionSlideInB : public CCTransitionSlideInL
{
public:
CCTransitionSlideInB();
virtual ~CCTransitionSlideInB();
/** initializes the scenes */
virtual void initScenes(void);
/** returns the action that will be performed by the incoming and outgoing scene */
virtual CCActionInterval* action(void);
static CCTransitionSlideInB* create(float t, CCScene* scene);
protected:
virtual void sceneOrder();
};
/** @brief CCTransitionSlideInT:
Slide in the incoming scene from the top border.
*/
class CC_DLL CCTransitionSlideInT : public CCTransitionSlideInL
{
public:
CCTransitionSlideInT();
virtual ~CCTransitionSlideInT();
/** initializes the scenes */
virtual void initScenes(void);
/** returns the action that will be performed by the incoming and outgoing scene */
virtual CCActionInterval* action(void);
static CCTransitionSlideInT* create(float t, CCScene* scene);
protected:
virtual void sceneOrder();
};
/**
@brief Shrink the outgoing scene while grow the incoming scene
*/
class CC_DLL CCTransitionShrinkGrow : public CCTransitionScene , public CCTransitionEaseScene
{
public:
CCTransitionShrinkGrow();
virtual ~CCTransitionShrinkGrow();
virtual void onEnter();
virtual CCActionInterval* easeActionWithAction(CCActionInterval * action);
static CCTransitionShrinkGrow* create(float t, CCScene* scene);
};
/** @brief CCTransitionFlipX:
Flips the screen horizontally.
The front face is the outgoing scene and the back face is the incoming scene.
*/
class CC_DLL CCTransitionFlipX : public CCTransitionSceneOriented
{
public:
CCTransitionFlipX();
virtual ~CCTransitionFlipX();
virtual void onEnter();
static CCTransitionFlipX* create(float t, CCScene* s, tOrientation o);
static CCTransitionFlipX* create(float t, CCScene* s);
};
/** @brief CCTransitionFlipY:
Flips the screen vertically.
The front face is the outgoing scene and the back face is the incoming scene.
*/
class CC_DLL CCTransitionFlipY : public CCTransitionSceneOriented
{
public:
CCTransitionFlipY();
virtual ~CCTransitionFlipY();
virtual void onEnter();
static CCTransitionFlipY* create(float t, CCScene* s, tOrientation o);
static CCTransitionFlipY* create(float t, CCScene* s);
};
/** @brief CCTransitionFlipAngular:
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 CCTransitionFlipAngular : public CCTransitionSceneOriented
{
public:
CCTransitionFlipAngular();
virtual ~CCTransitionFlipAngular();
virtual void onEnter();
static CCTransitionFlipAngular* create(float t, CCScene* s, tOrientation o);
static CCTransitionFlipAngular* create(float t, CCScene* s);
};
/** @brief CCTransitionZoomFlipX:
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 CCTransitionZoomFlipX : public CCTransitionSceneOriented
{
public:
CCTransitionZoomFlipX();
virtual ~CCTransitionZoomFlipX();
virtual void onEnter();
static CCTransitionZoomFlipX* create(float t, CCScene* s, tOrientation o);
static CCTransitionZoomFlipX* create(float t, CCScene* s);
};
/** @brief CCTransitionZoomFlipY:
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 CCTransitionZoomFlipY : public CCTransitionSceneOriented
{
public:
CCTransitionZoomFlipY();
virtual ~CCTransitionZoomFlipY();
virtual void onEnter();
static CCTransitionZoomFlipY* create(float t, CCScene* s, tOrientation o);
static CCTransitionZoomFlipY* create(float t, CCScene* s);
};
/** @brief CCTransitionZoomFlipAngular:
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 CCTransitionZoomFlipAngular : public CCTransitionSceneOriented
{
public:
CCTransitionZoomFlipAngular();
virtual ~CCTransitionZoomFlipAngular();
virtual void onEnter();
static CCTransitionZoomFlipAngular* create(float t, CCScene* s, tOrientation o);
static CCTransitionZoomFlipAngular* create(float t, CCScene* s);
};
/** @brief CCTransitionFade:
Fade out the outgoing scene and then fade in the incoming scene.'''
*/
class CC_DLL CCTransitionFade : public CCTransitionScene
{
protected:
ccColor4B m_tColor;
public:
CCTransitionFade();
virtual ~CCTransitionFade();
/** creates the transition with a duration and with an RGB color
* Example: FadeTransition::create(2, scene, ccc3(255,0,0); // red color
*/
static CCTransitionFade* create(float duration,CCScene* scene, const ccColor3B& color);
static CCTransitionFade* create(float duration,CCScene* scene);
/** initializes the transition with a duration and with an RGB color */
virtual bool initWithDuration(float t, CCScene*scene ,const ccColor3B& color);
virtual bool initWithDuration(float t,CCScene* scene);
virtual void onEnter();
virtual void onExit();
};
class CCRenderTexture;
/**
@brief CCTransitionCrossFade:
Cross fades two scenes using the CCRenderTexture object.
*/
class CC_DLL CCTransitionCrossFade : public CCTransitionScene
{
public :
CCTransitionCrossFade();
virtual ~CCTransitionCrossFade();
virtual void draw();
virtual void onEnter();
virtual void onExit();
public:
static CCTransitionCrossFade* create(float t, CCScene* scene);
};
/** @brief CCTransitionTurnOffTiles:
Turn off the tiles of the outgoing scene in random order
*/
class CC_DLL CCTransitionTurnOffTiles : public CCTransitionScene ,public CCTransitionEaseScene
{
public :
CCTransitionTurnOffTiles();
virtual ~CCTransitionTurnOffTiles();
virtual void onEnter();
virtual CCActionInterval * easeActionWithAction(CCActionInterval * action);
public:
static CCTransitionTurnOffTiles* create(float t, CCScene* scene);
protected:
virtual void sceneOrder();
};
/** @brief CCTransitionSplitCols:
The odd columns goes upwards while the even columns goes downwards.
*/
class CC_DLL CCTransitionSplitCols : public CCTransitionScene , public CCTransitionEaseScene
{
public:
CCTransitionSplitCols();
virtual ~CCTransitionSplitCols();
virtual CCActionInterval* action(void);
virtual void onEnter();
virtual CCActionInterval * easeActionWithAction(CCActionInterval * action);
public:
static CCTransitionSplitCols* create(float t, CCScene* scene);
};
/** @brief CCTransitionSplitRows:
The odd rows goes to the left while the even rows goes to the right.
*/
class CC_DLL CCTransitionSplitRows : public CCTransitionSplitCols
{
public:
CCTransitionSplitRows();
virtual ~CCTransitionSplitRows();
virtual CCActionInterval* action(void);
public:
static CCTransitionSplitRows* create(float t, CCScene* scene);
};
/** @brief CCTransitionFadeTR:
Fade the tiles of the outgoing scene from the left-bottom corner the to top-right corner.
*/
class CC_DLL CCTransitionFadeTR : public CCTransitionScene , public CCTransitionEaseScene
{
public:
CCTransitionFadeTR();
virtual ~CCTransitionFadeTR();
virtual CCActionInterval* actionWithSize(const CCSize& size);
virtual void onEnter();
virtual CCActionInterval* easeActionWithAction(CCActionInterval * action);
public:
static CCTransitionFadeTR* create(float t, CCScene* scene);
protected:
virtual void sceneOrder();
};
/** @brief CCTransitionFadeBL:
Fade the tiles of the outgoing scene from the top-right corner to the bottom-left corner.
*/
class CC_DLL CCTransitionFadeBL : public CCTransitionFadeTR
{
public:
CCTransitionFadeBL();
virtual ~CCTransitionFadeBL();
virtual CCActionInterval* actionWithSize(const CCSize& size);
public:
static CCTransitionFadeBL* create(float t, CCScene* scene);
};
/** @brief CCTransitionFadeUp:
* Fade the tiles of the outgoing scene from the bottom to the top.
*/
class CC_DLL CCTransitionFadeUp : public CCTransitionFadeTR
{
public:
CCTransitionFadeUp();
virtual ~CCTransitionFadeUp();
virtual CCActionInterval* actionWithSize(const CCSize& size);
public:
static CCTransitionFadeUp* create(float t, CCScene* scene);
};
/** @brief CCTransitionFadeDown:
* Fade the tiles of the outgoing scene from the top to the bottom.
*/
class CC_DLL CCTransitionFadeDown : public CCTransitionFadeTR
{
public:
CCTransitionFadeDown();
virtual ~CCTransitionFadeDown();
virtual CCActionInterval* actionWithSize(const CCSize& size);
public:
static CCTransitionFadeDown* create(float t, CCScene* scene);
};
// end of transition group
/// @}
NS_CC_END
#endif // __CCTRANSITION_H__
浙公网安备 33010602011771号