
3.5 场景切换特效
Cocos提供了大量丰富的场景转场特效,用户可以在源码的CCTransition.js中看到一些基础的转场特效,在实际开发中为了保持游戏风格的统一,或许并不能把所有的特效一一用到,大多数转场特效的使用方法大同小异,这里对一些常用的转场特效做一个简单的介绍。本节的所有代码均在SceneSwitchEffectDemo项目中。
在不使用场景切换特效的时候,调用Director的runScene方法时传入的参数是Scene类,而实际上需要转场特效时传入的参数是TransitionScene的子类。
在CCTransition.js中可以看到,Cocos定义了TransitionScene继承Scene,而其下面的子类转场特效都继承自TransitionScene类,通过TransitionScene查看源码可以知道,实际上转场场景类自身也是场景的子类,它通过播放完一系列的转场动画之后再切换到目标场景上,只是中间多了一步转场动画的播放而已。
下面通过一个小小的Demo来演示场景切换特效的使用。为了实现场景切换的效果,首先需要创建几个场景,这里创建一个自定义场景作为入口场景,代码如下。


如代码所示,在MyLayer中定义了菜单项,可以单击添加文字,可以切换游戏场景和帮助场景,游戏场景的代码如下。

帮助场景的代码如下。

3个场景的代码都很简单,只是通过菜单项调用runScene方法来相互切换,不过它们有一个共同点,就是在runScene时调用了getRandomTransition方法,这个方法是自定义的,其实现如下。

它的内部实现就是通过随机的23种常用场景切换特效运用到场景切换中,其中23种常用的场景切换及其注释如下。




以上只是几中常用的场景切换特效,在实际开发中不一定都能用上,用户可以通过Cocos的API文档了解官方提供了哪些特效,以便在需要的时候使用。