![Cocos2d-JS游戏开发快速入门到实战](https://wfqqreader-1252317822.image.myqcloud.com/cover/782/26793782/b_26793782.jpg)
3.5 场景切换特效
Cocos提供了大量丰富的场景转场特效,用户可以在源码的CCTransition.js中看到一些基础的转场特效,在实际开发中为了保持游戏风格的统一,或许并不能把所有的特效一一用到,大多数转场特效的使用方法大同小异,这里对一些常用的转场特效做一个简单的介绍。本节的所有代码均在SceneSwitchEffectDemo项目中。
在不使用场景切换特效的时候,调用Director的runScene方法时传入的参数是Scene类,而实际上需要转场特效时传入的参数是TransitionScene的子类。
在CCTransition.js中可以看到,Cocos定义了TransitionScene继承Scene,而其下面的子类转场特效都继承自TransitionScene类,通过TransitionScene查看源码可以知道,实际上转场场景类自身也是场景的子类,它通过播放完一系列的转场动画之后再切换到目标场景上,只是中间多了一步转场动画的播放而已。
下面通过一个小小的Demo来演示场景切换特效的使用。为了实现场景切换的效果,首先需要创建几个场景,这里创建一个自定义场景作为入口场景,代码如下。
![](https://epubservercos.yuewen.com/C005C7/15253388705242106/epubprivate/OEBPS/Images/Figure-P70_5735.jpg?sign=1739304290-QGtK4osqvnY4IjOpT9sR7wwH0Q4z2x0j-0-391cd63e202be5350ba07d01296f06f1)
![](https://epubservercos.yuewen.com/C005C7/15253388705242106/epubprivate/OEBPS/Images/Figure-P71_5736.jpg?sign=1739304290-VeKWIhP4rX5aH52KskXCA9r1dcyzazzU-0-8da0c87eceaa1dbe01b8e5823bf9cc53)
如代码所示,在MyLayer中定义了菜单项,可以单击添加文字,可以切换游戏场景和帮助场景,游戏场景的代码如下。
![](https://epubservercos.yuewen.com/C005C7/15253388705242106/epubprivate/OEBPS/Images/Figure-P72_5737.jpg?sign=1739304290-YvqPd3fVHJel51p3SkYcZLVAP77ePaMN-0-92188db2649a2950bcc722e0f1eff80c)
帮助场景的代码如下。
![](https://epubservercos.yuewen.com/C005C7/15253388705242106/epubprivate/OEBPS/Images/Figure-P73_5742.jpg?sign=1739304290-LpcnjKoV0jOeEJ3rC3BPPM1btcn96e0F-0-e7a1f10e856c098323f2df91f2454d7e)
3个场景的代码都很简单,只是通过菜单项调用runScene方法来相互切换,不过它们有一个共同点,就是在runScene时调用了getRandomTransition方法,这个方法是自定义的,其实现如下。
![](https://epubservercos.yuewen.com/C005C7/15253388705242106/epubprivate/OEBPS/Images/Figure-P73_5744.jpg?sign=1739304290-RPnVpTIOaDi5O6YnzybjQRzihvxnkcyq-0-3bea3b4a719e2ae971b517b4eb9d222c)
它的内部实现就是通过随机的23种常用场景切换特效运用到场景切换中,其中23种常用的场景切换及其注释如下。
![](https://epubservercos.yuewen.com/C005C7/15253388705242106/epubprivate/OEBPS/Images/Figure-P74_5745.jpg?sign=1739304290-BNHd8UVNpytWXv7eg3RjHbmVeTnldwod-0-5717b6212f32bfe106abf5a75abfdcdc)
![](https://epubservercos.yuewen.com/C005C7/15253388705242106/epubprivate/OEBPS/Images/Figure-P75_5747.jpg?sign=1739304290-Q7pm559U8jjdzh3y4oaOZEdTTheMUs7d-0-3f243918accdbfd60218816276af2413)
![](https://epubservercos.yuewen.com/C005C7/15253388705242106/epubprivate/OEBPS/Images/Figure-P76_5748.jpg?sign=1739304290-D8imeNgmoaZyp3XECH7RboNvmR3s8nzA-0-60bb1829c8c8a429a7bf4a7e8daf24d0)
![](https://epubservercos.yuewen.com/C005C7/15253388705242106/epubprivate/OEBPS/Images/Figure-P77_5749.jpg?sign=1739304290-1B1pzzMfcycHe6q5E2eaUTEeyWdJ57yP-0-eb30070bc984f82141c50d670cd9d568)
以上只是几中常用的场景切换特效,在实际开发中不一定都能用上,用户可以通过Cocos的API文档了解官方提供了哪些特效,以便在需要的时候使用。