CCTransition(scene切换时会用到 产生特效 渐隐 碎片 翻页 钟摆 涡轮 渐远 左移 百叶窗。。。)

本文介绍了Cocos2D中多种场景切换效果及其使用方法,包括渐隐、跳动、翻页等效果,并提供了实现这些效果的具体代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

cocos2D场景切换方式总汇

CCTransitionFade,  //渐隐效果
CCTransitionFadeTR, //碎片效果
CCTransitionJumpZoom, //跳动效果
CCTransitionMoveInL, //从左向右移动
CCTransitionPageTurn, //翻页效果
CCTransitionRadialCCW, //钟摆效果
CCTransitionRotoZoom,//涡轮效果
CCTransitionSceneOriented,//
CCTransitionShrinkGrow, //渐远效果
CCTransitionSlideInL, //左移
CCTransitionSplitCols,//上下移动
CCTransitionTurnOffTiles//
CCTransitionScene : CCScene  基类

CCRotoZoomTransition 旋转缩小切换
CCJumpZoomTransition 缩小后跳跃切换
CCSlideInLTransition 从左向右切换
CCSlideInRTransition 从右向左切换
CCSlideInTTransition 从上向下切换
CCSlideInBTransition 从下向上切换
CCShrinkGrowTransition 逐渐缩小切换
CCFlipXTransition 已x中间为轴平面式旋转切换
CCFlipYTransition 已y中间为轴平面式旋转切换
CCFlipAngularTransition 侧翻式旋转切换
CCZoomFlipXTransition 缩小后x为轴旋转切换
CCZoomFlipYTransition 缩小后y为轴旋转切换
CCZoomFlipAngularTransition 缩小侧翻式旋转切换
CCFadeTransition 逐渐变暗切换
CCCrossFadeTransition   逐渐变暗切换2
CCTurnOffTilesTransition 随机方块覆盖切换
CCSplitColsTransition 三条上下分开切换
CCSplitRowsTransition 三条左右分开切换
CCFadeTRTransition 小方块大方块式切换 左下到右上 眩!
CCFadeBLTransition 小方块大方块式切换 右上到左下 眩!
CCFadeUpTransition 百叶窗从下向上
CCFadeDownTransition 百叶窗从上向下

CCTransitionRotoZoom : CCTransitionScene 旋转进入
CCTransitionJumpZoom : CCTransitionScene 跳动进入
CCTransitionMoveInL : CCTransitionScene<CCTransitionEaseScene> 从左侧进入
CCTransitionMoveInR : CCTransitionMoveInL 从右侧进入
CCTransitionMoveInT : CCTransitionMoveInL 从顶部进入
CCTransitionMoveInB : CCTransitionMoveInL 从底部进入
CCTransitionSlideInL : CCTransitionScene<CCTransitionEaseScene> 从左侧滑入
CCTransitionSlideInR : CCTransitionSlideInL 从右侧滑入
CCTransitionSlideInB : CCTransitionSlideInL 从顶部滑入
CCTransitionSlideInT : CCTransitionSlideInL 从底部滑入
CCTransitionShrinkGrow : CCTransitionScene<CCTransitionEaseScene> 交替进入
CCTransitionFlipX : CCTransitionSceneOriented x轴翻入(左右)
CCTransitionFlipY : CCTransitionSceneOriented y轴翻入(上下)
CCTransitionFlipAngular : CCTransitionSceneOriented 左上右下轴翻入
CCTransitionZoomFlipX : CCTransitionSceneOriented x轴翻入放大缩小效果(左右)
CCTransitionZoomFlipY : CCTransitionSceneOriented y轴翻入放大缩小效果(上下)
CCTransitionZoomFlipAngular :CCTransitionSceneOriented  左上右下轴翻入放大缩小效果
CCTransitionFade : CCTransitionScene  变暗变亮进入
CCTransitionCrossFade : CCTransitionScene 渐变进入
CCTransitionTurnOffTiles : CCTransitionScene<CCTransitionEaseScene> 小方格消失进入
CCTransitionSplitCols : CCTransitionScene<CCTransitionEaseScene> 竖条切换进入
CCTransitionSplitRows : CCTransitionSplitCols 横条切换进入
CCTransitionFadeTR : CCTransitionScene<CCTransitionEaseScene> 小方格右上角显示进入
CCTransitionFadeBL : CCTransitionFadeTR 小方格左下角显示进入
CCTransitionFadeUp : CCTransitionFadeTR 横条向上显示进入
CCTransitionFadeDown : CCTransitionFadeTR 横条向下显示进入

使用方法:
CCScene *scene = [CCScene node];   
[scene addChild:[GameLayer node]];   
[[CCDirector sharedDirector] replaceScene:[CCTransitionSplitRowstransitionWithDuration:1.2f scene:scene]];   

场景切换的两种方式
直接调用场景
[CCDirector sharedDirector]replaceScene:[GameLayer scene]];
2、从init函数开始执行
CCScene *scene = [CCScene node];   
[scene addChild:[GameLayer node]];   
[[CCDirector sharedDirector] replaceScene:[CCTransitionSplitRowstransitionWithDuration:1.2f scene:scene]];   


缩放的形式切换场景的方法
[[CCDirector sharedDirector] replaceScene:[CCShrinkGrowTransition transitionWithDuration:1.2f scene:sc]]; 


(1)CCTransitionFade

描述:场景在指定的时间内淡入淡出到一个指定的颜色。

(2)CCTransitionFadeTR

描述:从屏幕的左下角向上卷起瓦片(tiles),从而显示场景。它还有3个变化:

CCTransitionFadeBL:从屏幕的右上角到左下角淡出场景的瓦片。

CCTransitionFadeUp:从屏幕的底部到顶部淡出场景的瓦片。

CCTransitionFadeDown:从屏幕的顶部到底部淡出场景的瓦片。

(3)CCTransitionJumpZoom

描述:现有场景跳动着变小,新场景跳动着变大。

(4)CCTransitionMoveInL

描述:旧的场景会移出,而新场景会从屏幕左侧移入。它还有3个变化:

CCTransitionMoveInB:新场景从屏幕的底部移入。

CCTransitionMoveInT:新场景从屏幕的上方移入。

CCTransitionMoveInR:新场景从屏幕的右侧移入。

(5)CCTransitionSceneOriented

描述:将整个场景翻转过来。该效果还有6个变化:

CCTransitionFlipX:场景横向翻转。

CCTransitionFlipY:场景纵向翻转。

CCTransitionFlipAngular:场景一半按横向,一半按纵向翻转。

CCTransitionZoomFlipAngular:场景一半按横向,一半按纵向翻转,同时有一定缩放。

CCTransitionZoomFlipX:场景纵向翻转,同时有一定缩放。

CCTransitionZoomFlipY:场景横向翻转,同时有一定缩放。

(6)CCTransitionPageTurn

描述:翻动书页的过渡效果。

(7)CCTransitionRotoZoom

描述:当前场景旋转变小,新场景旋转变大。

(8)CCTransitionShrinkGrow

描述:当前场景缩小,新场景在其之上变大。

(9)CCTransitionSlideInL

描述:新场景从左边滑入。该效果还有另外3个变化:

CCTransitionSlideInR:新场景从右边滑入。

CCTransitionSlideInB:新场景从底部滑入。

CCTransitionSlideInT:新场景从顶部滑入。

(10)CCTransitionSplitCols

描述:将当前场景切成竖条,上下移动显示新场景。该效果还有一个变化是CCTransition SplitRows,将当前场景切成横条,左右移动显示新场景。

(11)CCTransitionTurnOffTiles

描述:将当前场景分成方块,用分成方块的新场景随机地替换当前场景分出的方块。

(12)CCTransitionProgressRadialCCW

描述:新场景沿着径向逆时针显示。该效果还有一个变化是CCTransitionProgress RadialCW,让新的场景沿着径向顺时针显示。

(13)CCTransitionProgressHorizontal

描述:新场景沿着横向逐渐显示。该效果还有一个变化是CCTransitionProgressVertical,让新场景沿着纵向逐渐显示。该效果是Cocos2D v2.0新增场景过渡效果。

(14)CCTransitionProgressInOut

描述:新场景由内到外逐渐显示。该效果还有一个变化是CCTransitionProgressOutIn,让新场景由外到内逐渐显示。该效果是Cocos2D v2.0新增场景过渡效果。





#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_DLLCCTransitionScene : 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();


    static CCTransitionScene *create(float t, CCScene *scene);

{

    CCTransitionScene * pScene = new CCTransitionScene();

    if(pScene && pScene->initWithDuration(t,scene))

    {

        pScene->autorelease();

        return pScene;

    }

    CC_SAFE_DELETE(pScene);

    return NULL;

}


    virtual boolinitWithDuration(float t,CCScene* scene);

{

    CCAssert( scene != NULL, "Argument scene must be non-nil");


    if (CCScene::init())

    {

        m_fDuration = t;


        // retain

        m_pInScene = scene;

        m_pInScene->retain();

        m_pOutScene = CCDirector::sharedDirector()->getRunningScene();

        if (m_pOutScene == NULL)

        {

            m_pOutScene = CCScene::create();

            m_pOutScene->init();

        }

        m_pOutScene->retain();


        CCAssert( m_pInScene != m_pOutScene, "Incoming scene must be different from the outgoing scene" );

        

        sceneOrder();


        return true;

    }

    else

    {

        return false;

    }

}



    /** called after the transition finishes */

    voidfinish(void);

{

    // clean up     

     m_pInScene->setVisible(true);

     m_pInScene->setPosition(ccp(0,0));

     m_pInScene->setScale(1.0f);

     m_pInScene->setRotation(0.0f);

     m_pInScene->getCamera()->restore();

 

     m_pOutScene->setVisible(false);

     m_pOutScene->setPosition(ccp(0,0));

     m_pOutScene->setScale(1.0f);

     m_pOutScene->setRotation(0.0f);

     m_pOutScene->getCamera()->restore();


    //[self schedule:@selector(setNewScene:) interval:0];

    this->schedule(schedule_selector(CCTransitionScene::setNewScene), 0);


}


    /** used by some transitions to hide the outer scene */

    voidhideOutShowIn(void);

{

    m_pInScene->setVisible(true);

    m_pOutScene->setVisible(false);

}


protected:

    virtual voidsceneOrder();

{

    m_bIsInSceneOnTop = true;

}


private:

    voidsetNewScene(float dt);

{    

    CC_UNUSED_PARAM(dt);


    this->unschedule(schedule_selector(CCTransitionScene::setNewScene));

    

    // Before replacing, save the "send cleanup to scene"

    CCDirector *director = CCDirector::sharedDirector();

    m_bIsSendCleanupToScene = director->isSendCleanupToScene();

    

    director->replaceScene(m_pInScene);

    

    // issue #267

    m_pOutScene->setVisible(true);

}


};


/** @brief A CCTransition that supports orientation(方向) like.

* Possible orientation: LeftOver, RightOver, UpOver, DownOver

*/

class CC_DLLCCTransitionSceneOriented : public CCTransitionScene

{

protected:

    tOrientation m_eOrientation; //Possible orientation: LeftOver, RightOver, UpOver, DownOver


public:

    CCTransitionSceneOriented();

    virtual ~CCTransitionSceneOriented();


    /** creates a base transition with duration and incoming scene */

    static CCTransitionSceneOriented * create(float t,CCScene* scene, tOrientation orientation);

{

    CCTransitionSceneOriented * pScene = new CCTransitionSceneOriented();

    pScene->initWithDuration(t,scene,orientation);

    pScene->autorelease();

    return pScene;

}


    /** initializes a transition with duration and incoming scene */

    virtual bool initWithDuration(float t,CCScene* scene,tOrientation orientation);

{

    if ( CCTransitionScene::initWithDuration(t, scene) )

    {

        m_eOrientation = orientation;

    }

    return true;

}


};


/** @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 voidonEnter();

{

    CCTransitionScene::onEnter();


    m_pInScene->setScale(0.001f);

    m_pOutScene->setScale(1.0f);


    m_pInScene->setAnchorPoint(ccp(0.5f, 0.5f));

    m_pOutScene->setAnchorPoint(ccp(0.5f, 0.5f));


    CCActionInterval *rotozoom = (CCActionInterval*)(CCSequence::create

    (

        CCSpawn::create

        (

            CCScaleBy::create(m_fDuration/2, 0.001f),

            CCRotateBy::create(m_fDuration/2, 360 * 2),

            NULL

        ),

        CCDelayTime::create(m_fDuration/2),

        NULL

    ));


    m_pOutScene->runAction(rotozoom);

    m_pInScene->runAction

    (

        CCSequence::create

        (

            rotozoom->reverse(),

            CCCallFunc::create(this, callfunc_selector(CCTransitionScene::finish)),

            NULL

        )

    );

}

    static CCTransitionRotoZoom*create(float t, CCScene* scene);

{                                                               

    CCTransitionRotoZoom* pScene = new CCTransitionRotoZoom();                                

    if(pScene && pScene->initWithDuration(t, scene))            

    {                                                           

        pScene->autorelease();                                  

        return pScene;                                          

    }                                                           

    CC_SAFE_DELETE(pScene);                                     

    return NULL;                                                

}


};


/** @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 voidonEnter();

{

    CCTransitionScene::onEnter();

    CCSize s = CCDirector::sharedDirector()->getWinSize();


    m_pInScene->setScale(0.5f);

    m_pInScene->setPosition(ccp(s.width, 0));

    m_pInScene->setAnchorPoint(ccp(0.5f, 0.5f));

    m_pOutScene->setAnchorPoint(ccp(0.5f, 0.5f));


    CCActionInterval *jump = CCJumpBy::create(m_fDuration/4, ccp(-s.width,0), s.width/4, 2);

    CCActionInterval *scaleIn = CCScaleTo::create(m_fDuration/4, 1.0f);

    CCActionInterval *scaleOut = CCScaleTo::create(m_fDuration/4, 0.5f);


    CCActionInterval *jumpZoomOut = (CCActionInterval*)(CCSequence::create(scaleOut, jump, NULL));

    CCActionInterval *jumpZoomIn = (CCActionInterval*)(CCSequence::create(jump, scaleIn, NULL));


    CCActionInterval *delay = CCDelayTime::create(m_fDuration/2);


    m_pOutScene->runAction(jumpZoomOut);

    m_pInScene->runAction

    (

        CCSequence::create

        (

            delay,

            jumpZoomIn,

            CCCallFunc::create(this, callfunc_selector(CCTransitionScene::finish)),

            NULL

        )

    );

}




    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__


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值