菜鸟教程 | Egret场景切换管理类切换和单例使用方法

 开发过程中必不可少的一个环节,当项目中有两个或两个以上的游戏场景时,怎样管理这些场景,能够使它们之间的切换更加方便呢?今天就为大家介绍场景切换管理类的切换方法和单例的使用方法。

案例源码:https://github.com/hkjlx/qhcj

 首先创建一个所有场景的父类Scene

Scene类主要是为了方便管理场景,此类是一个抽象类,子类必须继承此类并实现onComplete()抽象方法才能进行场景的切换。

复制代码
abstract class Scene extends eui.Component{     public constructor() {         super();         // 监听组件创建完毕 也就是场景的外观创建完毕        this.addEventListener(eui.UIEvent.CREATION_COMPLETE,this.onComplete,this);     }      protected abstract onComplete(); }
复制代码

场景管理器SceneManger

所有场景的切换,弹出关闭都是由SceneManger类来控制,这样方便对场景进行统一管理。

1.使用单例模式

SceneManger类需要使用到单例模式,单例模式是一种常用的软件设计模式,其定义是单例对象的类只能允许一个实例存在。

复制代码
class SceneManager {     private static _manager:SceneManager;     public static get Instance(){         if( SceneManager._manager==null){             SceneManager._manager = newSceneManager();         }         return SceneManager._manager;     }     public constructor() {     } }
复制代码

 

 2.控制场景切换的方法

changeScene()方法:当舞台上有场景时,会先将当前场景从舞台移除,再添加新场景到舞台上;当舞台还没有场景时,会直接添加到舞台上。

 

复制代码
public rootLayer:eui.UILayer;//起始场景    private currentScene:Scene;//需要显示的场景    private pop_scene:Scene;//弹出场景层    //切换场景    public changeScene(s:Scene){         if(this.currentScene){            this.rootLayer.removeChild(this.currentScene);             this.currentScene = null;         }         this.rootLayer.addChild(s);         this.currentScene = s;     }
复制代码

 

3.弹出场景和关闭弹出场景

弹出场景不会使底层场景消失,而是直接在当前场景上再显示一个场景出来(主要用于设置面板之类的)。

在弹出场景时先调用了一次关闭场景层,防止还没关闭场景层又点击了弹出场景层。


   

复制代码
 //弹出场景层    public pushScene(s:Scene){         this.popScene();         if(!this.pop_scene){             this.rootLayer.addChild(s);             this.pop_scene = s;         }     }     //关闭场景层    public popScene(){         if(this.pop_scene){             this.rootLayer.removeChild(this
                        
关键字:
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信