LayaAir2.0分离模式创建UI界面

哎,我弄了好久,现在分享一下,万一有需要的小伙伴呢,前人铺路,后人开飞机,哈哈

import { ui } from "../ui/layaMaxUI";
/**分离模式 的脚本方式创建页面 */
export default class TipDialog extends Laya.Script {
    private view: ui.TipDialogUI = null;
    private resArr: any[] = [];
    constructor() {
        super();
        this.initView();
    }

    private initView(): void {
        if (this.view == null) {
            this.view = new ui.TipDialogUI();
            this.view.createView(Laya.loader.getRes("TipDialog.json"))//界面对应的json配置文件
        }
        this.view.tipLab.text = "提示框"
        this.view.tipLab.anchorX = 0.5
        this.view.tipLab.align = "center"
    }

    public registerHandles() {
        this.view.on(Laya.Event.CLICK, this, () => { this.hide(); })
    }

    public removeHandles() {
        this.view.offAll();
    }
    /**显示界面 */
    public show(): void {
        this.view.popup();
    }
    /**隐藏界面 */
    public hide(): void {
        if (this.view) {
            this.removeHandles()
            this.view.close()
        }
    }
    /**干掉界面,可以附带销毁素材 */
    public destory(): void {
        if (this.view) {
            this.view.offAll();
            Laya.timer.clearAll(this)
            this.view = null;
        }
        for (let index: number = 0; index < this.resArr.length; index++) {
            Laya.loader.clearRes(this.resArr[index])
        }
    }
}

一个简单的弹出框,在页面编辑的时候设置(F9)为分离模式,如下图
LayaAir2.0分离模式创建UI界面_第1张图片
在显示这个界面之前记得提前加载界面对应的配置文件。

2.0版本创建的Scene或者View,Dialog都可以绑定runtime,直接将代码拖上去就好,继承界面类就是那么实现的,好用

tips:
/**

  • 继承页面基类,实现页面逻辑。在IDE里面设置场景的Runtime属性即可和场景进行关联
  • 相比脚本方式,继承式页面类,可以直接使用页面定义的属性(通过IDE内var属性定义),具有代码提示效果
  • 建议:如果是页面级的逻辑,需要频繁访问页面内多个元素,使用继承式写法,如果是独立小模块,功能单一,建议用脚本方式实现。
    */

你可能感兴趣的:(LAYA)