![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=1739554019-RolkjYZBJhh5i3ct2yipQxbXsk7sxh8l-0-fcd03615f8ea00927a1774f60232c558)
![](https://epubservercos.yuewen.com/C005C7/15253388705242106/epubprivate/OEBPS/Images/Figure-P71_5736.jpg?sign=1739554019-lcXFWgJNBOkLGLzEvKzq20IUlS2JWxgV-0-74e7a25d6c24351d5c588eaf79dd9036)
如代码所示,在MyLayer中定义了菜单项,可以单击添加文字,可以切换游戏场景和帮助场景,游戏场景的代码如下。
![](https://epubservercos.yuewen.com/C005C7/15253388705242106/epubprivate/OEBPS/Images/Figure-P72_5737.jpg?sign=1739554019-2ZgShYZ8y9HZtvv5jqxG9IUYksL8yKTb-0-c6004e976a87f0462415abe109b9c611)
帮助场景的代码如下。
![](https://epubservercos.yuewen.com/C005C7/15253388705242106/epubprivate/OEBPS/Images/Figure-P73_5742.jpg?sign=1739554019-VTA2ZsQCAFIrXPpK5VQPKEggCgFPKbUi-0-f521536178832ca8c234f290f389bd11)
3个场景的代码都很简单,只是通过菜单项调用runScene方法来相互切换,不过它们有一个共同点,就是在runScene时调用了getRandomTransition方法,这个方法是自定义的,其实现如下。
![](https://epubservercos.yuewen.com/C005C7/15253388705242106/epubprivate/OEBPS/Images/Figure-P73_5744.jpg?sign=1739554019-BcTtnlHFXFkuGfxGVqY08ctGiYwba4KG-0-57b67ba92c5d9d8fcb6f3c1f5823644f)
它的内部实现就是通过随机的23种常用场景切换特效运用到场景切换中,其中23种常用的场景切换及其注释如下。
![](https://epubservercos.yuewen.com/C005C7/15253388705242106/epubprivate/OEBPS/Images/Figure-P74_5745.jpg?sign=1739554019-Wx0j2w9UnF2O7SaKRtJOB7HYlZmuJSsu-0-c661da891c95a499cd79ed0987f8b5cf)
![](https://epubservercos.yuewen.com/C005C7/15253388705242106/epubprivate/OEBPS/Images/Figure-P75_5747.jpg?sign=1739554019-1vYB7zxpcuS74pVkozWojxso9EGKuFjj-0-e40eeeb62c0d1ad8e3e5911404ed7788)
![](https://epubservercos.yuewen.com/C005C7/15253388705242106/epubprivate/OEBPS/Images/Figure-P76_5748.jpg?sign=1739554019-c5jtsU3r0Yql7qEqC8bVgAsGhZlorzFE-0-0485ab8322ac82e13c4df1552754abe7)
![](https://epubservercos.yuewen.com/C005C7/15253388705242106/epubprivate/OEBPS/Images/Figure-P77_5749.jpg?sign=1739554019-GbJ5x6SPFrjYjYWdYjUZyDZQ7Mq5l60G-0-a0004c0aec3dcb2b89b2f4ed64c01388)
以上只是几中常用的场景切换特效,在实际开发中不一定都能用上,用户可以通过Cocos的API文档了解官方提供了哪些特效,以便在需要的时候使用。