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;
        }

    }
}

 

posted on 2018-02-01 15:09  被遗忘的优雅  阅读(460)  评论(0编辑  收藏  举报