哎,我弄了好久,现在分享一下,万一有需要的小伙伴呢,前人铺路,后人开飞机,哈哈
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)为分离模式,如下图
在显示这个界面之前记得提前加载界面对应的配置文件。
2.0版本创建的Scene或者View,Dialog都可以绑定runtime,直接将代码拖上去就好,继承界面类就是那么实现的,好用
tips:
/**
- 继承页面基类,实现页面逻辑。在IDE里面设置场景的Runtime属性即可和场景进行关联
- 相比脚本方式,继承式页面类,可以直接使用页面定义的属性(通过IDE内var属性定义),具有代码提示效果
- 建议:如果是页面级的逻辑,需要频繁访问页面内多个元素,使用继承式写法,如果是独立小模块,功能单一,建议用脚本方式实现。
*/