06、场景

场景的切换

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

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


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


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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值