cocos2dx之场景特效

来源:互联网 发布:淘宝男装代理 编辑:程序博客网 时间:2024/04/30 00:56
CCTransitionScene派生自CCScene,换句话说,场景特效本身也是一个场景。讲到这里,聪明的读者也许已经想到了,场景特效的实现方式与复合动作类似:复合动作是一类特殊的动作,它们包含其他动作,执行复合动作时,被包含的动作也会按照一定的方式执行;而场景特效是一类特殊的场景,它们包含了另一个场景,在运行场景特效时,被包含的原场景会以添加了特效的方式显示出来。因此,特效场景的使用方法与复合动作也类似。首先创建一个场景,称作原场景,然后把原场景当做参数来创建一个特效场景,使用时只需要把特效场景传入CCDirector的replaceScene方法即可,相关代码如下:

CCDirector::sharedDirector()->replaceScene(CCTransitionFlipY::create(5, pscene));

还有一些其他的场景效果类,他们都派生于CCTransitionScene:


/** @brief A CCTransition that supports orientation like.* Possible orientation: LeftOver, RightOver, UpOver, DownOver*/class CC_DLL CCTransitionSceneOriented : public CCTransitionScene{protected:    tOrientation m_eOrientation;public:    /**     *  @js ctor     */    CCTransitionSceneOriented();    /**     *  @js NA     *  @lua NA     */    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:    /**     *  @js ctor     */    CCTransitionRotoZoom();    /**     *  @js NA     *  @lua NA     */    virtual ~CCTransitionRotoZoom();    /**     *  @js NA     *  @lua NA     */    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:    /**     *  @js ctor     */    CCTransitionJumpZoom();    /**     *  @js NA     *  @lua NA     */    virtual ~CCTransitionJumpZoom();    /**     *  @js NA     *  @lua NA     */    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:    /**     *  @js ctor     */    CCTransitionMoveInL();    /**     *  @js NA     *  @lua NA     */    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);    /**     *  @js NA     *  @lua NA     */    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:    /**     *  @js ctor     */    CCTransitionMoveInR();    /**     *  @js NA     *  @lua NA     */    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:    /**     *  @js ctor     */    CCTransitionMoveInT();    /**     *  @js NA     *  @lua NA     */    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:    /**     *  @js ctor     */    CCTransitionMoveInB();    /**     *  @js NA     *  @lua NA     */    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:    /**     *  @js ctor     */    CCTransitionSlideInL();    /**     *  @js NA     *  @lua NA     */    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);    /**     *  @js NA     *  @lua NA     */    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:    /**     *  @js ctor     */    CCTransitionSlideInR();    /**     *  @js NA     *  @lua NA     */    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:    /**     *  @js ctor     */    CCTransitionSlideInB();    /**     *  @js NA     *  @lua NA     */    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:    /**     *  @js ctor     */    CCTransitionSlideInT();    /**     *  @js NA     *  @lua NA     */    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:    /**     *  @js ctor     */    CCTransitionShrinkGrow();    /**     *  @js NA     *  @lua NA     */    virtual ~CCTransitionShrinkGrow();    /**     *  @js NA     *  @lua NA     */    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:    /**     *  @js ctor     */    CCTransitionFlipX();    /**     *  @js NA     *  @lua NA     */    virtual ~CCTransitionFlipX();    /**     *  @js NA     *  @lua NA     */    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:    /**     *  @js ctor     */    CCTransitionFlipY();    /**     *  @js NA     *  @lua NA     */    virtual ~CCTransitionFlipY();    /**     *  @js NA     *  @lua NA     */    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:    /**     *  @js ctor     */    CCTransitionFlipAngular();    /**     *  @js NA     *  @lua NA     */    virtual ~CCTransitionFlipAngular();    /**     *  @js NA     *  @lua NA     */    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/inThe front face is the outgoing scene and the back face is the incoming scene.*/class CC_DLL CCTransitionZoomFlipX : public CCTransitionSceneOriented{public:    /**     *  @js ctor     */    CCTransitionZoomFlipX();    /**     *  @js NA     *  @lua NA     */    virtual ~CCTransitionZoomFlipX();    /**     *  @js NA     *  @lua NA     */    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/inThe front face is the outgoing scene and the back face is the incoming scene.*/class CC_DLL CCTransitionZoomFlipY : public CCTransitionSceneOriented{public:    /**     *  @js ctor     */    CCTransitionZoomFlipY();    /**     *  @js NA     *  @lua NA     */    virtual ~CCTransitionZoomFlipY();    /**     *  @js NA     *  @lua NA     */    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:    /**     *  @js ctor     */    CCTransitionZoomFlipAngular();    /**     *  @js NA     *  @lua NA     */    virtual ~CCTransitionZoomFlipAngular();    /**     *  @js NA     *  @lua NA     */    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:    /**     *  @js ctor     */    CCTransitionFade();    /**     *  @js NA     *  @lua NA     */    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);    /**     *  @js NA     *  @lua NA     */    virtual void onEnter();    /**     *  @js NA     *  @lua NA     */    virtual void onExit();};class CCRenderTexture;/**@brief CCTransitionCrossFade:Cross fades two scenes using the CCRenderTexture object.*/class CC_DLL CCTransitionCrossFade : public CCTransitionScene{public :    /**     *  @js ctor     */    CCTransitionCrossFade();    /**     *  @js NA     *  @lua NA     */    virtual ~CCTransitionCrossFade();    virtual void draw();    /**     *  @js NA     *  @lua NA     */    virtual void onEnter();    /**     *  @js NA     *  @lua NA     */    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 :    /**     *  @js ctor     */    CCTransitionTurnOffTiles();    /**     *  @js NA     *  @lua NA     */    virtual ~CCTransitionTurnOffTiles();    /**     *  @js NA     *  @lua NA     */    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:    /**     *  @js ctor     */    CCTransitionSplitCols();    /**     *  @js NA     *  @lua NA     */    virtual ~CCTransitionSplitCols();    virtual CCActionInterval* action(void);    /**     *  @js NA     *  @lua NA     */    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:    /**     *  @js ctor     */    CCTransitionSplitRows();    /**     *  @js NA     *  @lua NA     */    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:    /**     *  @js ctor     */    CCTransitionFadeTR();    /**     *  @js NA     *  @lua NA     */    virtual ~CCTransitionFadeTR();    virtual CCActionInterval* actionWithSize(const CCSize& size);    /**     *  @js NA     *  @lua NA     */    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:    /**     *  @js ctor     */    CCTransitionFadeBL();    /**     *  @js NA     *  @lua NA     */    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:    /**     *  @js ctor     */    CCTransitionFadeUp();    /**     *  @js NA     *  @lua NA     */    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:    /**     *  @js ctor     */    CCTransitionFadeDown();    /**     *  @js NA     *  @lua NA     */    virtual ~CCTransitionFadeDown();    virtual CCActionInterval* actionWithSize(const CCSize& size);public:    static CCTransitionFadeDown* create(float t, CCScene* scene);};


0 0
原创粉丝点击