[Cocos2d-x For WP8]Transition 場景切換

    在遊戲中一般會打完了一關以後就會從當前的場景轉換到另一關的場景了,在Cocos2d-x中是由CCScene類表示一個場景。那麼場景(CCScene)是爲遊戲中的精靈(CCSprite)提供了舞臺,場景由導演(CCDirector)控制,遊戲中的全部場景存放在一個棧中,有且只有一個場景能夠處於激活狀態。直接replaceScene(即不適用動畫效果)能夠輕鬆的完成場景的切換,釋放掉就場景,加載新場景,幾乎不須要時間的過渡,瞬間完成。那麼若是咱們要在場景轉換的過程當中用一點動畫的效果,就須要用到CCTransition這些場景切換的動畫類了,在Cocos2d-x這些場景切換動畫類有下面這些:ide

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 橫條向下顯示進入


下面咱們在Hello World的項目中使用一下場景轉換的動畫,當用戶點擊界面的時候就會切換到兩外一個場景動畫

//在init方法裏面初始化當前的實例
bool HelloWorld::init()
{
    bool bRet = false;

    do 
    {
        //CCLayer進行初始化,初始化失敗跳出循環
        if ( !CCLayer::init() )
        {
            break;
        }
        //獲取手機屏幕的大小
        CCSize size = CCDirector::sharedDirector()->getWinSize();
        //建立文字Label
        CCLabelTTF* pLabel = CCLabelTTF::create("Hello World", "Times New Roman", 24);
        //設置文字Label的位置
        pLabel->setPosition( ccp(size.width * 0.5, size.height * 0.5) );
         //設置文字Label的顏色
        pLabel->setColor(ccc3(160, 80, 5));
        //添加到當前的界面上
        this->addChild(pLabel, 1);
        //接收界面的的觸摸事件
        setTouchEnabled(true);

        bRet = true;
    } while (0);
    //返回成功
    return bRet;
}


// 屏幕點擊事件
void HelloWorld::ccTouchesEnded(CCSet* touches, CCEvent* event)
{
    CCScene* s = new CCScene();
    CCLayer* pLayer = new TestLayer2();
    s->addChild(pLayer);
    CCScene* pScene = CCTransitionJumpZoom::create(4.2f, s);
    pLayer->release();
    s->release();
    if (pScene)
    {
        CCDirector::sharedDirector()->replaceScene(pScene);
    }
}

TestLayer2::TestLayer2()
{
         CCSize size = CCDirector::sharedDirector()->getWinSize();
        CCSprite *b = CCSprite::create("cat.png");
        b->setPosition(ccp(0, 0));
        b->setPosition(ccp(size.width * 0.5, size.height * 0.5));
        this->addChild(b);
}

TestLayer2::~TestLayer2()
{

}

運行的效果:this

相關文章
相關標籤/搜索