在遊戲中一般會打完了一關以後就會從當前的場景轉換到另一關的場景了,在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