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

    /**
     * 1, 把多个显示对象添加到容器中时, 我们可以通过 容器.numChildren 获取容器中有多少个显示对象
     * 2, 当容器中有多个显示对象时, 会出现深度的问题
     * ---默认情况下, 第一个添加到容器的显示对象层级是 0, 第二个是 1, 依次递增
     * ---当显示对象交错时, 深度值大的覆盖深度值小的
     * 3, 容器.addChildAt(显示对象, 深度值) 方法将显示对象添加到容器中并指定深度值的
     * ---如果层级出现冲突, 添加次序( 从 0 开始, 第一次添加次序为 0 ) 和 设置的层级值相等的在最上层
     * ---添加次序和层级值不相等的显示对象, 添加次序大的显示对象在上层, 在编写程序时, 应尽量避免层级冲突
     * 4, 容器.removeChildAt( 层级值 ) 用于根据显示的对象的层级删除显示对象
     * ---如果某个层级设置了多个显示对象, 则删除添加次序最大的那个
     * 5, 容器.removeChildren() 用于删除容器内的多有显示对象
     * 6, 如果要交互两个显示对象的层级值, 可以使用 两种方法如下:
     * ---容器.swapChildren( 显示对象, 显示对象 ) 或 容器.swapChildrenAt(深度值, 深度值)
     * 7, 容器.setChildIndex( 显示对象, 新的深度值 ), 用于从新设置容器内的显示对象的深度值
     * 8, 获取容器内的显示对象有以下两种方法
     * --- 容器.getChildAt( 深度值 ) 或者 容器.getChildByName( 显示对象 )
     */
    private onAddToStage(event: egret.Event) {

        var spr1:egret.Sprite = new egret.Sprite();
        spr1.graphics.beginFill( 0xff0000 );
        spr1.graphics.drawRect( 0, 0, 100, 100);
        spr1.graphics.endFill();
        this.addChildAt( spr1, 1);

        var spr2:egret.Sprite = new egret.Sprite();
        spr2.graphics.beginFill( 0x00ff00 );
        spr2.graphics.drawRect( 0, 0, 80, 80);
        spr2.graphics.endFill();
        spr2.x  = 50;
        spr2.y = 50;
        this.addChildAt( spr2, 1 );

        var spr3:egret.Sprite = new egret.Sprite();
        spr3.graphics.beginFill( 0x0000ff );
        spr3.graphics.drawRect( 0, 0, 80, 80);
        spr3.graphics.endFill();
        spr3.x  = 75;
        spr3.y = 75;
        this.addChildAt(spr3, 1)

    }
}

 

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