学习cocos2dx

cocos2dx scene切换动画

#ifndef  _EFFECT_
#define  _EFFECT_

#include  "cocos2d.h"

using namespace cocos2d;

enum SceneTransitionEffect {
    NORMAL,             
    GRID,               //部落格
    SWITCH,             //近远-远近----- 
    MOVE_LEFT,          //另一个layout左侧进入(视觉感觉是屏幕右移)
    MOVE_RIGHT,         //另一个layout右侧进入(视觉感觉是屏幕左移)  
    MOVE_UP,            //另一个layout上侧进入(视觉感觉是屏幕下移)  
    MOVE_DOWN,          //另一个layout下侧进入(视觉感觉是屏幕上移) 
    MIDDLE_UP,          //当前屏幕被分为3列,两则下移,中间上移  
    MIDDLE_RIGHT,       //当前屏幕被分为3列,两则左移,中间右移 
    FAN_SWITCH,         //扇形转换
    FLAT_SWITCH,        //平面旋转
    NEAR_FAR_JUMP,      //近-远-跳动
    FLIP_X_3D,          //3D x轴反转
    FLIP_Y_3D,          //3D y轴反转
    FLIP_XY_3D,         //3D x,y轴反转
    FLIP_X,             //x轴反转
    FLIP_Y,             //y轴反转
    FLIP_XY,            //x,y轴反转
    IN_LEFT,            //另外一个layout左侧进入覆盖当前layout 
    IN_RIGHT,           //另外一个layout右侧进入覆盖当前layout 
    IN_TOP,             //另外一个layout上面进入覆盖当前layout 
    IN_BOTTOM,          //另外一个layout下面进入覆盖当前layout 
    FADE,               //渐变(默认无颜色,可以附带颜色)  
    FADE_WHITE,         //渐变(默认无颜色,可以附带颜色)  
    CROSS_FADE,         //另外一个直接渐变覆盖当前layout   
    FADE_TR,            //移动(方格状)部落格,从左下往右上  
    FADE_BL,            //移动(方格状)部落格,从右上往左下   
    FADE_UP,            //移动(长矩形,宽度是屏幕宽)部落格,从下往上
    FADE_DOWN,          //移动(长矩形,宽度是屏幕宽)部落格,从上往下
    };

static void SceneEffect(CCScene* scene,SceneTransitionEffect type)
{
    CCDirector* director=CCDirector::sharedDirector();
//    type=FADE_DOWN;
    
    switch (type) {
        case    NORMAL:
            director->replaceScene(scene);
            break;
        case    GRID:
            director->replaceScene(CCTransitionTurnOffTiles::transitionWithDuration(1.2f,scene));
            break;
        case    SWITCH:
            director->replaceScene(CCTransitionShrinkGrow::transitionWithDuration(1.2f,scene));
            break;
        case    MOVE_LEFT:
            director->replaceScene(CCTransitionSlideInR::transitionWithDuration(1.2f,scene));
            break;
        case    MOVE_RIGHT:
            director->replaceScene(CCTransitionSlideInL::transitionWithDuration(1.2f,scene));
            break;
        case    MOVE_UP:
            director->replaceScene(CCTransitionSlideInB::transitionWithDuration(1.2f,scene));
            break;
        case    MOVE_DOWN:
            director->replaceScene(CCTransitionSlideInT::transitionWithDuration(1.2f,scene));
            break;    
        case    MIDDLE_UP:
            director->replaceScene(CCTransitionSplitCols::transitionWithDuration(1.2f,scene));
            break;
        case    MIDDLE_RIGHT:
            director->replaceScene(CCTransitionSplitRows::transitionWithDuration(1.2f,scene));
            break;        
        case    FAN_SWITCH:
            director->replaceScene(CCTransitionRadialCW::transitionWithDuration(1.2f,scene));
            break;
        case    FLAT_SWITCH:
            director->replaceScene(CCTransitionRotoZoom::transitionWithDuration(1.2f,scene));
            break;
        case    NEAR_FAR_JUMP:
            director->replaceScene(CCTransitionJumpZoom::transitionWithDuration(1.2f,scene));
            break;
        case    FLIP_X_3D:
            director->replaceScene(CCTransitionZoomFlipX::transitionWithDuration(1.2f,scene));
            break;    
        case    FLIP_Y_3D:
            director->replaceScene(CCTransitionZoomFlipY::transitionWithDuration(1.2f,scene));
            break;
        case    FLIP_XY_3D:
            director->replaceScene(CCTransitionZoomFlipAngular::transitionWithDuration(1.2f,scene));
            break;
        case    FLIP_X:
            director->replaceScene(CCTransitionFlipX::transitionWithDuration(1.2f,scene));
            break;    
        case    FLIP_Y:
            director->replaceScene(CCTransitionFlipY::transitionWithDuration(1.2f,scene));
            break;  
        case    FLIP_XY:
            director->replaceScene(CCTransitionFlipAngular::transitionWithDuration(1.2f,scene));
            break;    
        case    IN_LEFT:
            director->replaceScene(CCTransitionMoveInL::transitionWithDuration(1.2f,scene));
            break;  
        case    IN_RIGHT:
            director->replaceScene(CCTransitionMoveInR::transitionWithDuration(1.2f,scene));
            break;    
        case    IN_TOP:
            director->replaceScene(CCTransitionMoveInT::transitionWithDuration(1.2f,scene));
            break;  
        case    IN_BOTTOM:
            director->replaceScene(CCTransitionMoveInB::transitionWithDuration(1.2f,scene));
            break;   
        case    FADE:
            director->replaceScene(CCTransitionFade::transitionWithDuration(1.2f,scene,ccc3(0,0,0)));//ccBlack
            break;  
        case    FADE_WHITE:
            director->replaceScene(CCTransitionFade::transitionWithDuration(1.2f,scene,ccc3(255,255,255)));//ccWHITE
            break;  
        case    CROSS_FADE:
            director->replaceScene(CCTransitionCrossFade::transitionWithDuration(1.2f,scene));
            break;  
        case    FADE_TR:
            director->replaceScene(CCTransitionFadeBL::transitionWithDuration(1.2f,scene));
            break;  
        case    FADE_BL:
            director->replaceScene(CCTransitionFadeTR::transitionWithDuration(1.2f,scene));
            break;  
        case    FADE_UP:
            director->replaceScene(CCTransitionFadeDown::transitionWithDuration(1.2f,scene));
            break;  
        case    FADE_DOWN:
            director->replaceScene(CCTransitionFadeUp::transitionWithDuration(1.2f,scene));
            break;      
        default:
            break;
    }
}


#endif
原文地址:https://www.cnblogs.com/chuckTsao/p/2986109.html