Interface
代码示例
游戏界面相关代码示例
关于系统组界面
系统组界面是指通过事件或者使用脚本(GameUI.show)打开的界面,是记录在系统预设组中,具有唯一性,且可以通过界面的ID管理该界面。
底层实现则是将这些创建出来的界面存在一个数组中,以ID作为索引,以便操作指定ID的界面能够找到该界面。
创建界面(系统组)
Script.ts
// 创建3号界面(使用GameUI.load方法获得的是基类,这里类型转化一下,
// 3号界面默认是由系统自动生成的GUI_3,你也可以绑定一个界面类继承于GUI_3)
let ui:GUI_3 = GameUI.load(3) as any;
// 添加到界面层
Game.layer.uiLayer.addChild(ui);
// 通过GameUI.show直接显示系统组界面(会被添加到Game.layer.uiLayer上,该方法同上面两行代码是一样的效果)
let ui:GUI_3 = GameUI.show(3) as any;
创建界面(非系统组)
Script.ts
// 使用GameUI方式创建(克隆模式)
let ui:GUI_3 = GameUI.load(3,true) as any;
// 直接新建,GUI_3是系统自动生成的界面类
let ui = new GUI_3();
访问界面的控件
界面自动创建的类会根据控件的名称自动创建该变量以便直接访问控件。
如果界面控件重名的话那么只记录其中一个靠前的,但是你可以通过API来操作获取所有指定名字的子显示对象。
Script.ts
// 比如3号界面有一个名字为btn的按钮,那么可以这样直接访问。
let ui = new GUI_3;
ui.btn.x = 123;
如果一个界面的下一层子对象名字都叫做btn,有3个,获取所有名字为btn的子对象存放在btns中
Script.ts
let ui = new GUI_3;
let btns = [];
for(let i=0;i< ui.numChildren;i++){
let comp = ui.getChildAt(i);
if(comp.name=="btn")btns.push(comp);
}
界面绑定类
由于系统根据界面自动生成了GUI_XX,你可以自定义类继承于GUI_XX,假设该界面存在一个名为btn的按钮则可以直接在构造函数中访问操作。
Script.ts
class MyGUI extends GUI_3 {
constructor() {
super();
this.btn.x = 500;
// 让名为btn的控件注册点击事件,当点击时执行onClick函数
this.btn.on(EventObject.CLICK,this,this.onClick);
}
private onClick(e:EventObject):void{
alert("您点击了我");
}
}