![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=1739148748-f0CS5Ywr1Ev2YFAO3dxpS9j6wcGIudgA-0-e1a9ed8acaae3407d1df0d3ccb8919c9)
![](https://epubservercos.yuewen.com/C005C7/15253388705242106/epubprivate/OEBPS/Images/Figure-P71_5736.jpg?sign=1739148748-1uETwE0WztU1MsROveiCBqBr4ojCkd7k-0-b399b01b3b032a3aaa3383cfd4a1d6d0)
如代码所示,在MyLayer中定义了菜单项,可以单击添加文字,可以切换游戏场景和帮助场景,游戏场景的代码如下。
![](https://epubservercos.yuewen.com/C005C7/15253388705242106/epubprivate/OEBPS/Images/Figure-P72_5737.jpg?sign=1739148748-4c1vBsdxe1WVYvtb2EWJBigDkmhmpaTD-0-54c68c986d2a672c614947e11dedf743)
帮助场景的代码如下。
![](https://epubservercos.yuewen.com/C005C7/15253388705242106/epubprivate/OEBPS/Images/Figure-P73_5742.jpg?sign=1739148748-U7XHybFsfdor9Y1vVCa298mxwxdTyGRo-0-dc522d09cc41f20010daa0581a2d515a)
3个场景的代码都很简单,只是通过菜单项调用runScene方法来相互切换,不过它们有一个共同点,就是在runScene时调用了getRandomTransition方法,这个方法是自定义的,其实现如下。
![](https://epubservercos.yuewen.com/C005C7/15253388705242106/epubprivate/OEBPS/Images/Figure-P73_5744.jpg?sign=1739148748-JhoLtXUzXs2kE0bGFcYJ6DKcpqH3fsKl-0-e68c60399b8ebad02b0c1db5836a44e1)
它的内部实现就是通过随机的23种常用场景切换特效运用到场景切换中,其中23种常用的场景切换及其注释如下。
![](https://epubservercos.yuewen.com/C005C7/15253388705242106/epubprivate/OEBPS/Images/Figure-P74_5745.jpg?sign=1739148748-GqJlM7HY7gA4dNEiS0oYdqxC1txnQVMr-0-8ef265e34de6bd399b934ea9d591e66a)
![](https://epubservercos.yuewen.com/C005C7/15253388705242106/epubprivate/OEBPS/Images/Figure-P75_5747.jpg?sign=1739148748-knpJsJWlNg5h7uhUjzwaxTjbNxU1Vu1X-0-4a77831ca227516c516f26100161c409)
![](https://epubservercos.yuewen.com/C005C7/15253388705242106/epubprivate/OEBPS/Images/Figure-P76_5748.jpg?sign=1739148748-lI7vzEtPcFVCchJQE2DGHd9IlAyGoPtq-0-3ee8388dc2330d2ca1e5d22708720c86)
![](https://epubservercos.yuewen.com/C005C7/15253388705242106/epubprivate/OEBPS/Images/Figure-P77_5749.jpg?sign=1739148748-g1OuoV6U63zHVYiu5ZRGa4CK7GSRGM16-0-d1e94a2e5ddd66079095056eec8405c6)
以上只是几中常用的场景切换特效,在实际开发中不一定都能用上,用户可以通过Cocos的API文档了解官方提供了哪些特效,以便在需要的时候使用。