在游戏里,场景就是关卡。关卡由人物角色和背景构成。在电影里,场景就是电影中的各种场面,各种场面主要由人物活动和背景等构成。而在Cocos2d-x 引擎中,场景存放的是需要渲染的图层,任务角色和菜单,它可以作为一个整体,一起渲染,一起销毁,一起被场景切换使用。即游戏关卡的实施者,其管理这多个CCLayer,进行场景展现,相关业务逻辑的处理等; 一个场景就是一个界面,定义了所显示的所有角色图层信息。
Scene(场景)是一个抽象的概念,仅被用作Node(节点)的一个子类。Scene(场景)和Node(节点)几乎相同,不同的是Scene的默认锚点在屏幕的中心。现在 scene 没有其它的逻辑,不需要我们做太多的操作及处理,更多的操作处理基本都是在布景层上完成。CCScene 最重要的功能是提供了一组可以在继承类中覆盖的方法:
- onEnter 场景开始运行时自动调用此方法
- onExit 场景退出后自动调用此方法
- onEnterTransitionFinish 切入当前场景的过渡效果完成后自动调用此方法
- onExitTransitionStart 退出当前场景的过渡效果开始运行时自动调用此方法
- onCleanup 场景清理资源时自动调用此方法
一旦在继承类中覆盖了这些方法,那么在相应事件发生时会自动调用上述方法。
场景切换时的事件调用顺序
从一个场景切换到另一个场景时,会自动调用两个场景对象的 onEnter()、onExit() 等方法。这些方法的调用顺序如下:
从 SceneA 切换到 SceneB(不使用过渡效果):
- SceneB:onEnter()
- SceneA:onExit()
- SceneA:onCleanup()
从 SceneA 切换到 SceneB(使用过渡效果):
- SceneA:onExitTransitionStart()
- SceneB:onEnter()
- SceneB:onEnterTransitionFinish()
- SceneA:onExit()
- SceneA:onCleanup()