您的位置:首页 > 其它

白鹭引擎 - 对象的添加与删除 ( 开关效果 addChild, removeChild )

2018-02-01 15:16 239 查看
class Main extends egret.DisplayObjectContainer {

/**
* Main 类构造器, 初始化的时候自动执行, ( 子类的构造函数必须调用父类的构造函数 super )
* constructor 是类的构造函数, 类在实例化的时候调用
* egret.Event.ADDED_TO_STAGE, 在将显示对象添加到舞台显示列表时调度
*/
public constructor() {
super();
this.addEventListener(egret.Event.ADDED_TO_STAGE, this.onAddToStage, this);
}

/**
* 添加到显示列表, 容器.addChild(显示对象)
* 移除出显示列表, 容器.removeChild(显示对象)
* 需要注意的几个点如下:
* 1, 显示对象在运行时会被高频率的添加到显示列表或从中删除,但显示对象独立于显示列表
* 2, 显示对象的坐标系是相对坐标系,而非绝对坐标系, 相对于父容器
* 3, 同一个显示对象无论被代码加入显示列表多少次,在屏幕上只绘制一次
* 4, 显示对象必须有父级容器, 才能被删除, 如果删除的显示对象不再容器中, 会抛异常
* 5, Uncaught Error: [Fatal]child未被addChild到该parent:
* 6, 在删除显示对象时, 建议判断其是否存在父级 => 显示对象.parent
*/
private onAddToStage(event: egret.Event) {

// 绘制一个可以显示和取消的正方形
var circle: egret.Shape = new egret.Shape();
circle.graphics.beginFill(0xff0000);
circle.graphics.drawRect(50,50,100,100);
circle.graphics.endFill();
this.addChild(circle);

// 绘制一个可以点击的按钮
var button: egret.Shape = new egret.Shape();
button.graphics.beginFill(0xff0000);
button.graphics.drawRect(500,800,100,100);
button.graphics.endFill();
this.addChild(button);

// 点击屏幕时, 显示和消失
var isShow: boolean = true, myThis: Main = this;
button.touchEnabled = true;
button.addEventListener(egret.TouchEvent.TOUCH_TAP, onAddRemove, this);
function onAddRemove(ev: egret.TouchEvent) {
if (isShow) {
myThis.removeChild(circle);
} else {
myThis.addChild(circle);
}
isShow = !isShow;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: