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

本文主要是介绍CCTransition(scene切换时会用到 产生特效 渐隐 碎片 翻页 钟摆 涡轮 渐远 左移 百叶窗。。。),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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__


这篇关于CCTransition(scene切换时会用到 产生特效 渐隐 碎片 翻页 钟摆 涡轮 渐远 左移 百叶窗。。。)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/661605

相关文章

redis切换数据库的方法【jedis】

package com.test;import redis.clients.jedis.Jedis;public class readredis {public static void main(String[] args) {// 连接本地的 Redis 服务Jedis jedis = new Jedis("127.0.0.1", 6379);jedis.select(10);String v

PHP序列化用到的构造:__sleep() __wakeup()

串行化serialize可以把变量包括对象,转化成连续bytes数据. 你可以将串行化后的变量存在一个文件里或在网络上传输. 然后再反串行化还原为原来的数据. 你在反串行化类的对象之前定义的类,PHP可以成功地存储其对象的属性和方法. 有时你可能需要一个对象在反串行化后立即执行. 为了这样的目的,PHP会自动寻找__sleep和__wakeup方法.   当一个对象被串行化,PHP会

轻松解决 linux平台 下编辑文档产生的 ^M 符号问题

一、^M:产生的原因:          windows平台下 使用“回车键”,则会在 行尾 产生 ^M 二、产生的后果:        在执行脚本时,shell解析器 会执行错误,弹出类似于:./XXXXX.sh: /bin/sh^M:bad interpreter:No such file or directory         ------解析器会将 末尾 带 ^M 的字段视为 文

芯片后端之 PT 使用 report_timing 产生报告如何阅读

今天,就PT常用的命令,做一个介绍,希望对大家以后的工作,起到帮助作用。 在PrimeTime中,使用report_timing -delay max命令生成此报告。switch -delay max表示定时报告用于设置(这是默认值)。 首先,我们整体看一下通过report_timing 运行之后,报告产生的整体样式。 pt_shell> report_timing -from start_

切换国内yum源

切换国内yum源 一、备份现有YUM源二、下载新的YUM源配置文件三、先清理YUM缓存再生成四、测试新的YUM源五、重启系统服务(生效可以不重启)可选 首先,切换国内YUM源的具体步骤取决于您使用的Linux发行版和当前的YUM源配置。以下是一般步骤,适用于大多数基于Red Hat的发行版,如CentOS和Fedora: 一、备份现有YUM源 在修改YUM源之前,建议先备份现

双jdk切换

现在因为业务需求单一jdk8已经不满足日常需求了,以我为例之前用的jdk8,但是最新的一个项目用的是17版本的,没招了就下载配置的一套,需要手动切换用哪个版本的步骤如下 jdk8就自己安装配置吧,这只说在有8的版本上在配置17 1.下载一个17win的包(不下载exe) Java Downloads | Oracle 中国 2.解压到自己需要的位置  我的 D:\JDK\jdk-17

Selenium Webdriver处理iFrame之间的切换问题

原文转自:https://blog.csdn.net/dongtianlaile/article/details/9854263 对于使用的iFrame技术的website, 使用xPath无法直接定位到元素,需要先切换到相应的frame再进行定位: [java]  view plain copy WebElement frame=driver.findElement(By.

「Debug R」报错unable to find an inherited method for function是如何产生的

在一个群里看到这样一条报错,截图如下: 报错信息 当然这种问题解决起来也很快,无非就是把报错信息复制出来放在搜索引擎上,只不过你要挑选合适的搜索引擎。 百度 谷歌 必应 解决方案就是用dplyr::select。 虽然报错解决了,但是我还想着要重复出这个报错。因为只有能重复出报错,才能证明你不是运气好才解

LLVM——安装多版本LLVM和Clang并切换使用(Ubuntu)

1、描述 本机(Ubuntu22)已经安装了LLVM-14,但是需要使用LLVM-12。安装LLVM-12和Clang-12并切换使用。 2、过程 安装LLVM-12和Clang-12。 sudo apt-get install llvm-12sudo apt-get install clang-12 【注】运行 sudo apt-get install llvm-12 命令时,默认情况

微型操作系统内核源码详解系列五(五):cm3下Pendsv切换任务上篇

系列一:微型操作系统内核源码详解系列一:rtos内核源码概论篇(以freertos为例)-CSDN博客 系列二:微型操作系统内核源码详解系列二:数据结构和对象篇(以freertos为例)-CSDN博客 系列三:微型操作系统内核源码详解系列三(0):空间存储及内存管理篇(前置篇)-CSDN博客                 微型操作系统内核源码详解系列三(1):任务及切换篇(任务函数定义)-