游戏中可能会存在多个场景,但场景一般都是多用于复用的情况下,如首页、选关页面,这些页面切换后,应该仍然留在内存中,以便下次获取可以直接使用。如果我们需要用到场景,应继承ZScene对象,场景会比基础容器API会多以下几个API:
//当场景不再需要,可以在这里做一些特定释放处理
public function onSceneRelease():Void{};
//当场景已经被创建后,但经过API再次添加到舞台时,会调用此方法,可作为刷新页面的作用
public function onSceneReset():Void{};
一个简单的示例:
class MainScene extends ZScene {
override public function onInit():Void{
super.onInit();
//实现逻辑
}
override public function onSceneRelease():Void{
//实现页面失效处理
}
override public function onSceneReset():Void{
//实现页面重用,刷新处理等
}
}
场景一般不需要主动new,场景管理器会管理所有的场景用例。如果该场景是复用场景,可以直接调用replaceScene实现。
//创建一个MainScene的场景类
ZSceneManager.current.createScene(MainScene);
当需要切换场景,或者显示场景时,可直接调用replaceScene实现,这个方法会同时处理createScene方法。
//切换至一个ManScene的场景类,如果该类已经存在,则会进行复用,其中布尔值是决定当前被切换的场景是否需要直接释放掉。
false); ZSceneManager.current.replaceScene(MainScene,
提供了有2种释放方法:
//针对场景实例进行释放
ZSceneManager.current.releaseScene(scene);//针对场景类进行释放
ZSceneManager.current.releaseSceneFormClass(MainScene);