06、场景

场景的切换

一个游戏中会有多个场景。

比如游戏菜单是一个场景 :

06、场景_第1张图片

游戏设置界面也是一个场景 : 

06、场景_第2张图片

cocos2d中,使用cc.director.runScene函数进行场景的切换。 使用方法如下 :

cc.director.runScene(new Scene());

使用上面的代码进行场景切换的过程是瞬间的,没有任何的过渡效果。若想要有过渡效果的场景切换,可以如下设置 :

cc.director.runScene( new cc.TransitionFade(3.0, new Scene() ) );  

运行后,场景的切换会有一个渐变的过渡效果。过渡的快慢取决于3.0这个参数,这个参数代表过渡的时间。

除了cc.TransitionFade这个效果外,cocos2d还提供了其它场景的过渡效果 :

无需webgl支持

cc.director.runScene( new cc.TransitionFade(3.0, new Scene() ) ); //渐变切换

cc.director.runScene( new cc.TransitionJumpZoom(3.0, new Scene() ) ); //先缩小,然后跳跃切换

cc.director.runScene( new cc.TransitionShrinkGrow(3.0, new Scene() ) ); //交错切换

cc.director.runScene( new cc.TransitionRotoZoom(3.0, new Scene() ) );//旋转切换

cc.director.runScene( new cc.TransitionProgressRadialCCW(0.5, new Scene() ) );//逆时针切换到下一场景

cc.director.runScene( new cc.TransitionProgressRadialCW(0.5, new Scene() ) );//时针切换到下一场景

cc.director.runScene( new cc.TransitionMoveInL(3.0, new Scene() ) ); //新场景从左移入覆盖,会叠加在旧场景上

cc.director.runScene( new cc.TransitionMoveInR(3.0, new Scene() ) );//新场景从右移入覆盖,会叠加在旧场景上

cc.director.runScene( new cc.TransitionMoveInT(3.0, new Scene() ) );//新场景从上移入覆盖,会叠加在旧场景上

cc.director.runScene( new cc.TransitionMoveInB(3.0, new Scene() ) );//新场景从下移入覆盖,会叠加在旧场景上

cc.director.runScene( new cc.TransitionSlideInL(3.0, new Scene() ) ); //场景从左移入推出原场景

cc.director.runScene( new cc.TransitionSlideInR(3.0, new Scene() ) );//场景从右移入推出原场景

cc.director.runScene( new cc.TransitionSlideInT(3.0, new Scene() ) );//场景从上移入推出原场景

cc.director.runScene( new cc.TransitionSlideInB(3.0, new Scene() ) );//场景从下移入推出原场景

webgl支持

cc.director.runScene( new cc.TransitionCrossFade(3.0, new Scene() ) ); //淡出淡入交叉,同时进行

cc.director.runScene( new cc.TransitionPageTurn(3.0, new Scene(), false ) ); //翻页,前翻 

cc.director.runScene( new cc.TransitionPageTurn(3.0, new Scene(), true ) ); //翻页,后翻

cc.director.runScene( new cc.TransitionFadeTR(3.0, new Scene(), true ) );  //向右上波浪

cc.director.runScene( new cc.TransitionFadeBL(3.0, new Scene(), true ) ); //向左下波浪

cc.director.runScene( new cc.TransitionFadeUp(3.0, new Scene(), true ) ); //向上百叶窗

cc.director.runScene( new cc.TransitionFadeDown(3.0, new Scene(), true ) );//向下百叶窗 

cc.director.runScene( new cc.TransitionTurnOffTiles(3.0, new Scene(), true ) ); //随机小方块

cc.director.runScene( new cc.TransitionSplitRows(3.0, new Scene(), true ) ); //按行切

cc.director.runScene( new cc.TransitionSplitCols(3.0, new Scene(), true ) );//按列切

 

推进和弹出场景

使用cc.director.runScene进行场景切换会销毁旧场景的所有内容。下次回到该场景时,所有内容都需要重新建立。

想象一下你在玩游戏的时候,如果想把背景音乐或者音效关掉,你会跳到游戏的设置场景里,如果这时使用cc.director.runScene进行场景的切换,那么你在返回游戏时,游戏的数据将会全部丢失,因为游戏场景早已被销毁了。

若不想旧的场景被销毁,可以使用 pushScene + popScene 的组合来进行场景的来回切换。

pushScene   //用新的场景覆盖当前场景。当前的场景会被暂停,但不会被销毁。相当于把当前的场景数据保存起来。

popScene     //销毁当前的场景,恢复旧场景的运行。

例子:

cc.director.pushScene( new SceneB() );  //进入场景B
cc.director.popScene();       //返回第场景A

 

你可能感兴趣的:(06、场景)