cocos2d-x中的場景切換特效
bool HelloWorld::init()
{
//////////////////////////////
// 1. super init first
if ( !CCLayer::init() )
{
return false;
}
CCSize size = CCDirector::sharedDirector()->getWinSize();
CCSprite * sp= CCSprite::create("background1.png");
sp->setPosition(ccp( size.width/2, size.height/2) );
addChild(sp);
CCLabelTTF * label = CCLabelTTF::create("點擊按鈕切換", "", 20);
// label->setPosition(ccp(size.width/2, size.height/2));
label->setColor(ccc3(255, 0, 255));
CCMenuItemLabel * itemLabel = CCMenuItemLabel::create(label, this, menu_selector(HelloWorld::changeScene));
// itemLabel->setPosition(ccp(size.width/2,size.height/2));
CCMenu * menu = CCMenu::create(itemLabel,NULL);
addChild(menu);
return true;
}
void HelloWorld:: changeScene()
{
CCTransitionScene * reScene = NULL;
CCScene * s = TestLayer::scene();
float t = 1.2f;
// CCTransitionJumpZoom
// 作用: 創建一個跳動的過渡動畫
// 參數1:過渡動作的時間
// 參數2:切換到目標場景的對象
// reScene = CCTransitionJumpZoom ::create(t , s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionProgressRadialCCW
// 作用: 創建一個扇形條形式的過渡動畫, 逆時針方向
// 參數1:過渡動作的時間
// 參數2:切換到目標場景的對象
// reScene = CCTransitionProgressRadialCCW::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionProgressRadialCW
// 作用: 創建一個扇形條形式的過渡動畫, 順時針方向
// 參數1:過渡動作的時間
// 參數2:切換到目標場景的對象
// reScene = CCTransitionProgressRadialCW::create(t,s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionProgressHorizontal
// 作用: 創建一個水平條形式的過渡動畫,
// 參數1:過渡動作的時間
// 參數2:切換到目標場景的對象
// reScene = CCTransitionProgressHorizontal ::create(t,s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionProgressVertical
// 作用: 創建一個垂直條形式的過渡動畫,
// 參數1:過渡動作的時間
// 參數2:切換到目標場景的對象
// reScene = CCTransitionProgressVertical::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionProgressInOut
// 作用: 創建一個由裏向外擴展的過渡動畫,
// 參數1:過渡動作的時間
// 參數2:切換到目標場景的對象
// reScene = CCTransitionProgressInOut::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionProgressOutIn
// 作用: 創建一個由外向裏擴展的過渡動畫,
// 參數1:過渡動作的時間
// 參數2:切換到目標場景的對象
// reScene = CCTransitionProgressOutIn::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionCrossFade
// 作用:創建一個逐漸透明的過渡動畫
// 參數1:過渡動作的時間
// 參數2:切換到目標場景的對象
// reScene = CCTransitionCrossFade::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionPageTurn
// 作用:創建一個翻頁的過渡動畫
// 參數1:過渡動作持續的時間
// 參數2:切換的目標場景的對象
// 參數3:是否逆向翻頁
// reScene = CCTransitionPageTurn::create(t, s, false);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionFadeTR
// 作用:創建一個部落格過渡動畫, 從左下到右上
// 參數1:過渡動作持續的時間
// 參數2:切換的目標場景的對象
// reScene =CCTransitionFadeTR::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionFadeBL
// 作用:創建一個部落格過渡動畫, 從右上到左下
// 參數1:過渡動作持續的時間
// 參數2:切換的目標場景的對象
// reScene = CCTransitionFadeBL::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionFadeUp
// 作用:創建一個從下到上,條形摺疊的過渡動畫
// 參數1:過渡動作持續的時間
// 參數2:切換的目標場景的對象
// reScene= CCTransitionFadeUp::create(t, s);
// CCDirector::sharedDirector()->replaceScene(s);
// CCTransitionFadeDown
// 作用:創建一個從上到下,條形摺疊的過渡動畫
// 參數1:過渡動作持續的時間
// 參數2:切換的目標場景的對象
// reScene = CCTransitionFadeDown::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionTurnOffTiles
// 作用:創建一個隨機方格消失的過渡動畫
// 參數1:過渡動作的持續時間
// 參數2:切換的目標場景的對象
// reScene= CCTransitionTurnOffTiles::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionSplitRows
// 作用:創建一個分行劃分切換的過渡動畫
// 參數1:過渡動作的持續時間
// 參數2:切換的目標場景的對象
// reScene = CCTransitionSplitRows::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionSplitCols
// 作用:創建一個分列劃分切換的過渡動畫
// 參數1:過渡動作的持續時間
// 參數2:切換的目標場景的對象
// reScene = CCTransitionSplitCols::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionFade
// 作用:創建一個逐漸過渡到目標顏色的切換動畫
// 參數1:過渡動作的持續時間
// 參數2:切換的目標場景的對象
// 參數3:目標顏色
// reScene= CCTransitionFade::create(t, s, ccc3(255, 0, 0));
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionFlipX
// 作用:創建一個x軸反轉的切換動畫
// 參數1:過渡動作的持續時間
// 參數2:切換的目標場景的對象
// 參數3:反轉類型的枚舉變量 左右上下
// kOrientationDownOver kOrientationLeftOver kOrientationRightOver kOrientationUpOver
// reScene = CCTransitionFlipX::create(t, s, kOrientationRightOver);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionFlipY
// 參數1:過渡動作的持續時間
// 參數2:切換的目標場景的對象
// 參數3:反轉類型的枚舉變量 左右上下
// reScene = CCTransitionFlipY::create(t, s
// , kOrientationDownOver);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionFlipAngular
// 作用:創建一個帶有反轉角切換動畫
// // 參數1:過渡動作的持續時間
// 參數2:切換的目標場景的對象
// 參數3:反轉類型的枚舉變量 左右上下
// reScene = CCTransitionFlipAngular::create(t, s, kOrientationLeftOver);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionZoomFlipX
// 作用:創建一個帶有縮放的x軸反轉切換的動畫
// 參數1:過渡動作的持續時間
// 參數2:切換的目標場景的對象
// 參數3:反轉類型的枚舉變量 左右上下
// reScene=CCTransitionZoomFlipX::create(t, s, kOrientationLeftOver);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionZoomFlipY
// 作用:創建一個帶有縮放的Y軸反轉切換的動畫
// 參數1:過渡動作的持續時間
// 參數2:切換的目標場景的對象
// 參數3:反轉類型的枚舉變量 左右上下
// reScene=CCTransitionZoomFlipY::create(t, s, kOrientationDownOver);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionZoomFlipAngular
// 作用:創建一個帶有縮放 ,反轉角切換的動畫
// 參數1:過渡動作的持續時間
// 參數2:切換的目標場景的對象
// 參數3:反轉類型的枚舉變量 左右上下
// reScene=CCTransitionZoomFlipAngular::create(t, s, kOrientationRightOver);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionShrinkGrow
// 創建一個放縮交替的過渡動畫
// 參數1:過渡動作的持續時間
// 參數2:切換的目標場景的對象
// reScene = CCTransitionShrinkGrow::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionRotoZoom
// 創建一個旋轉放縮交替的過渡動畫
// 參數1:過渡動作的持續時間
// 參數2:切換的目標場景的對象
// reScene = CCTransitionRotoZoom::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionMoveInL
// 作用:創建一個從左邊推入覆蓋的過渡動畫
// 參數1:過渡動作的持續時間
// 參數2:切換的目標場景的對象
// reScene = CCTransitionMoveInL::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionMoveInR
// 作用:創建一個從右邊推入覆蓋的過渡動畫
// 參數1:過渡動作的持續時間
// 參數2:切換的目標場景的對象
// reScene = CCTransitionMoveInR::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionMoveInB
// 作用:創建一個從下邊推入覆蓋的過渡動畫
// 參數1:過渡動作的持續時間
// 參數2:切換的目標場景的對象
// reScene = CCTransitionMoveInB::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionMoveInT
// 作用:創建一個從上邊推入覆蓋的過渡動畫
// 參數1:過渡動作的持續時間
// 參數2:切換的目標場景的對象
// reScene = CCTransitionMoveInT::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionSlideInL
// 作用:創建一個從左側推入並頂出舊場景的過渡動畫
// 參數1:過渡動作的持續時間
// 參數2:切換的目標場景的對象
// reScene =CCTransitionSlideInL::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionSlideInR
// 作用:創建一個從右側推入並頂出舊場景的過渡動畫
// 參數1:過渡動作的持續時間
// 參數2:切換的目標場景的對象
// reScene =CCTransitionSlideInR::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionSlideInT
// 作用:創建一個從頂部推入並頂出舊場景的過渡動畫
// 參數1:過渡動作的持續時間
// 參數2:切換的目標場景的對象
// reScene =CCTransitionSlideInT::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionSlideInB
// 作用:創建一個從下部推入並頂出舊場景的過渡動畫
// 參數1:過渡動作的持續時間
// 參數2:切換的目標場景的對象
reScene =CCTransitionSlideInB::create(t, s);
CCDirector::sharedDirector()->replaceScene(reScene);
}
HelloWorld:: ~HelloWorld()
{
}
//生命週期函數
void HelloWorld:: onEnter()
{
CCLayer::onEnter();//務必調用
}
void HelloWorld:: onEnterTransitionDidFinish()
{
CCLayer::onEnterTransitionDidFinish();//務必調用
}
void HelloWorld:: onExit()
{
CCLayer::onExit();//務必調用
}
{
//////////////////////////////
// 1. super init first
if ( !CCLayer::init() )
{
return false;
}
CCSize size = CCDirector::sharedDirector()->getWinSize();
CCSprite * sp= CCSprite::create("background1.png");
sp->setPosition(ccp( size.width/2, size.height/2) );
addChild(sp);
CCLabelTTF * label = CCLabelTTF::create("點擊按鈕切換", "", 20);
// label->setPosition(ccp(size.width/2, size.height/2));
label->setColor(ccc3(255, 0, 255));
CCMenuItemLabel * itemLabel = CCMenuItemLabel::create(label, this, menu_selector(HelloWorld::changeScene));
// itemLabel->setPosition(ccp(size.width/2,size.height/2));
CCMenu * menu = CCMenu::create(itemLabel,NULL);
addChild(menu);
return true;
}
void HelloWorld:: changeScene()
{
CCTransitionScene * reScene = NULL;
CCScene * s = TestLayer::scene();
float t = 1.2f;
// CCTransitionJumpZoom
// 作用: 創建一個跳動的過渡動畫
// 參數1:過渡動作的時間
// 參數2:切換到目標場景的對象
// reScene = CCTransitionJumpZoom ::create(t , s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionProgressRadialCCW
// 作用: 創建一個扇形條形式的過渡動畫, 逆時針方向
// 參數1:過渡動作的時間
// 參數2:切換到目標場景的對象
// reScene = CCTransitionProgressRadialCCW::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionProgressRadialCW
// 作用: 創建一個扇形條形式的過渡動畫, 順時針方向
// 參數1:過渡動作的時間
// 參數2:切換到目標場景的對象
// reScene = CCTransitionProgressRadialCW::create(t,s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionProgressHorizontal
// 作用: 創建一個水平條形式的過渡動畫,
// 參數1:過渡動作的時間
// 參數2:切換到目標場景的對象
// reScene = CCTransitionProgressHorizontal ::create(t,s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionProgressVertical
// 作用: 創建一個垂直條形式的過渡動畫,
// 參數1:過渡動作的時間
// 參數2:切換到目標場景的對象
// reScene = CCTransitionProgressVertical::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionProgressInOut
// 作用: 創建一個由裏向外擴展的過渡動畫,
// 參數1:過渡動作的時間
// 參數2:切換到目標場景的對象
// reScene = CCTransitionProgressInOut::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionProgressOutIn
// 作用: 創建一個由外向裏擴展的過渡動畫,
// 參數1:過渡動作的時間
// 參數2:切換到目標場景的對象
// reScene = CCTransitionProgressOutIn::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionCrossFade
// 作用:創建一個逐漸透明的過渡動畫
// 參數1:過渡動作的時間
// 參數2:切換到目標場景的對象
// reScene = CCTransitionCrossFade::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionPageTurn
// 作用:創建一個翻頁的過渡動畫
// 參數1:過渡動作持續的時間
// 參數2:切換的目標場景的對象
// 參數3:是否逆向翻頁
// reScene = CCTransitionPageTurn::create(t, s, false);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionFadeTR
// 作用:創建一個部落格過渡動畫, 從左下到右上
// 參數1:過渡動作持續的時間
// 參數2:切換的目標場景的對象
// reScene =CCTransitionFadeTR::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionFadeBL
// 作用:創建一個部落格過渡動畫, 從右上到左下
// 參數1:過渡動作持續的時間
// 參數2:切換的目標場景的對象
// reScene = CCTransitionFadeBL::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionFadeUp
// 作用:創建一個從下到上,條形摺疊的過渡動畫
// 參數1:過渡動作持續的時間
// 參數2:切換的目標場景的對象
// reScene= CCTransitionFadeUp::create(t, s);
// CCDirector::sharedDirector()->replaceScene(s);
// CCTransitionFadeDown
// 作用:創建一個從上到下,條形摺疊的過渡動畫
// 參數1:過渡動作持續的時間
// 參數2:切換的目標場景的對象
// reScene = CCTransitionFadeDown::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionTurnOffTiles
// 作用:創建一個隨機方格消失的過渡動畫
// 參數1:過渡動作的持續時間
// 參數2:切換的目標場景的對象
// reScene= CCTransitionTurnOffTiles::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionSplitRows
// 作用:創建一個分行劃分切換的過渡動畫
// 參數1:過渡動作的持續時間
// 參數2:切換的目標場景的對象
// reScene = CCTransitionSplitRows::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionSplitCols
// 作用:創建一個分列劃分切換的過渡動畫
// 參數1:過渡動作的持續時間
// 參數2:切換的目標場景的對象
// reScene = CCTransitionSplitCols::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionFade
// 作用:創建一個逐漸過渡到目標顏色的切換動畫
// 參數1:過渡動作的持續時間
// 參數2:切換的目標場景的對象
// 參數3:目標顏色
// reScene= CCTransitionFade::create(t, s, ccc3(255, 0, 0));
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionFlipX
// 作用:創建一個x軸反轉的切換動畫
// 參數1:過渡動作的持續時間
// 參數2:切換的目標場景的對象
// 參數3:反轉類型的枚舉變量 左右上下
// kOrientationDownOver kOrientationLeftOver kOrientationRightOver kOrientationUpOver
// reScene = CCTransitionFlipX::create(t, s, kOrientationRightOver);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionFlipY
// 參數1:過渡動作的持續時間
// 參數2:切換的目標場景的對象
// 參數3:反轉類型的枚舉變量 左右上下
// reScene = CCTransitionFlipY::create(t, s
// , kOrientationDownOver);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionFlipAngular
// 作用:創建一個帶有反轉角切換動畫
// // 參數1:過渡動作的持續時間
// 參數2:切換的目標場景的對象
// 參數3:反轉類型的枚舉變量 左右上下
// reScene = CCTransitionFlipAngular::create(t, s, kOrientationLeftOver);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionZoomFlipX
// 作用:創建一個帶有縮放的x軸反轉切換的動畫
// 參數1:過渡動作的持續時間
// 參數2:切換的目標場景的對象
// 參數3:反轉類型的枚舉變量 左右上下
// reScene=CCTransitionZoomFlipX::create(t, s, kOrientationLeftOver);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionZoomFlipY
// 作用:創建一個帶有縮放的Y軸反轉切換的動畫
// 參數1:過渡動作的持續時間
// 參數2:切換的目標場景的對象
// 參數3:反轉類型的枚舉變量 左右上下
// reScene=CCTransitionZoomFlipY::create(t, s, kOrientationDownOver);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionZoomFlipAngular
// 作用:創建一個帶有縮放 ,反轉角切換的動畫
// 參數1:過渡動作的持續時間
// 參數2:切換的目標場景的對象
// 參數3:反轉類型的枚舉變量 左右上下
// reScene=CCTransitionZoomFlipAngular::create(t, s, kOrientationRightOver);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionShrinkGrow
// 創建一個放縮交替的過渡動畫
// 參數1:過渡動作的持續時間
// 參數2:切換的目標場景的對象
// reScene = CCTransitionShrinkGrow::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionRotoZoom
// 創建一個旋轉放縮交替的過渡動畫
// 參數1:過渡動作的持續時間
// 參數2:切換的目標場景的對象
// reScene = CCTransitionRotoZoom::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionMoveInL
// 作用:創建一個從左邊推入覆蓋的過渡動畫
// 參數1:過渡動作的持續時間
// 參數2:切換的目標場景的對象
// reScene = CCTransitionMoveInL::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionMoveInR
// 作用:創建一個從右邊推入覆蓋的過渡動畫
// 參數1:過渡動作的持續時間
// 參數2:切換的目標場景的對象
// reScene = CCTransitionMoveInR::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionMoveInB
// 作用:創建一個從下邊推入覆蓋的過渡動畫
// 參數1:過渡動作的持續時間
// 參數2:切換的目標場景的對象
// reScene = CCTransitionMoveInB::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionMoveInT
// 作用:創建一個從上邊推入覆蓋的過渡動畫
// 參數1:過渡動作的持續時間
// 參數2:切換的目標場景的對象
// reScene = CCTransitionMoveInT::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionSlideInL
// 作用:創建一個從左側推入並頂出舊場景的過渡動畫
// 參數1:過渡動作的持續時間
// 參數2:切換的目標場景的對象
// reScene =CCTransitionSlideInL::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionSlideInR
// 作用:創建一個從右側推入並頂出舊場景的過渡動畫
// 參數1:過渡動作的持續時間
// 參數2:切換的目標場景的對象
// reScene =CCTransitionSlideInR::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionSlideInT
// 作用:創建一個從頂部推入並頂出舊場景的過渡動畫
// 參數1:過渡動作的持續時間
// 參數2:切換的目標場景的對象
// reScene =CCTransitionSlideInT::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);
// CCTransitionSlideInB
// 作用:創建一個從下部推入並頂出舊場景的過渡動畫
// 參數1:過渡動作的持續時間
// 參數2:切換的目標場景的對象
reScene =CCTransitionSlideInB::create(t, s);
CCDirector::sharedDirector()->replaceScene(reScene);
}
HelloWorld:: ~HelloWorld()
{
}
//生命週期函數
void HelloWorld:: onEnter()
{
CCLayer::onEnter();//務必調用
}
void HelloWorld:: onEnterTransitionDidFinish()
{
CCLayer::onEnterTransitionDidFinish();//務必調用
}
void HelloWorld:: onExit()
{
CCLayer::onExit();//務必調用
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.