在游戏中通常会打完了一关之后就会从当前的场景转换到另外一关的场景了,在Cocos2d-x中是由CCScene类表示一个场景。那么场景(CCScene)是为游戏中的精灵(CCSprite)提供了舞台,场景由导演(CCDirector)控制,游戏中的所有场景存放在一个栈中,有且只有一个场景可以处于激活状态。直接replaceScene(即不适用动画效果)可以轻松的完成场景的切换,释放掉就场景,加载新场景,几乎不需要时间的过渡,瞬间完成。那么如果我们要在场景转换的过程中用一点动画的效果,就需要用到CCTransition这些场景切换的动画类了,在Cocos2d-x这些场景切换动画类有下面这些:
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 逐渐变暗切换2CCTurnOffTilesTransition 随机方块覆盖切换CCSplitColsTransition 三条上下分开切换CCSplitRowsTransition 三条左右分开切换CCFadeTRTransition 小方块大方块式切换 左下到右上 眩!CCFadeBLTransition 小方块大方块式切换 右上到左下 眩!CCFadeUpTransition 百叶窗从下向上CCFadeDownTransition 百叶窗从上向下CCTransitionRotoZoom : CCTransitionScene 旋转进入CCTransitionJumpZoom : CCTransitionScene 跳动进入CCTransitionMoveInL : CCTransitionScene从左侧进入CCTransitionMoveInR : CCTransitionMoveInL 从右侧进入CCTransitionMoveInT : CCTransitionMoveInL 从顶部进入CCTransitionMoveInB : CCTransitionMoveInL 从底部进入CCTransitionSlideInL : CCTransitionScene 从左侧滑入CCTransitionSlideInR : CCTransitionSlideInL 从右侧滑入CCTransitionSlideInB : CCTransitionSlideInL 从顶部滑入CCTransitionSlideInT : CCTransitionSlideInL 从底部滑入CCTransitionShrinkGrow : CCTransitionScene 交替进入CCTransitionFlipX : CCTransitionSceneOriented x轴翻入(左右)CCTransitionFlipY : CCTransitionSceneOriented y轴翻入(上下)CCTransitionFlipAngular : CCTransitionSceneOriented 左上右下轴翻入CCTransitionZoomFlipX : CCTransitionSceneOriented x轴翻入放大缩小效果(左右)CCTransitionZoomFlipY : CCTransitionSceneOriented y轴翻入放大缩小效果(上下)CCTransitionZoomFlipAngular :CCTransitionSceneOriented 左上右下轴翻入放大缩小效果CCTransitionFade : CCTransitionScene 变暗变亮进入CCTransitionCrossFade : CCTransitionScene 渐变进入CCTransitionTurnOffTiles : CCTransitionScene 小方格消失进入CCTransitionSplitCols : CCTransitionScene 竖条切换进入CCTransitionSplitRows : CCTransitionSplitCols 横条切换进入CCTransitionFadeTR : CCTransitionScene 小方格右上角显示进入CCTransitionFadeBL : CCTransitionFadeTR 小方格左下角显示进入CCTransitionFadeUp : CCTransitionFadeTR 横条向上显示进入CCTransitionFadeDown : CCTransitionFadeTR 横条向下显示进入
//在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(){}
运行的效果: