1: 矩形遮罩

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, 创建一个矩形遮罩: new egret.Rectangle(起点x, 起点y, 宽度值, 高度值)
     *  2, 遮罩要器作用, 就将遮罩的实例赋值给 显示对象.mask 属性
     *  3, 注意, 遮罩的意思其实是给显示对象加了一个范围, 显示对象只有在遮罩范围内的区域才会显示
     *  4, 注意, 如果遮罩发生变化, 需要从新赋值才能起作用
     */
    private onAddToStage(event: egret.Event) {

        var shp:egret.Shape = new egret.Shape();
        shp.graphics.beginFill( 0xff0000 );
        shp.graphics.drawRect( 0,0,300,300);
        shp.graphics.endFill();

        this.addChild( shp );
        var shp2:egret.Shape = new egret.Shape();
        shp2.graphics.beginFill( 0x00ff00 );
        shp2.graphics.drawCircle( 100,100, 100);
        shp2.graphics.endFill();
        this.addChild( shp2 );
        shp2.x = 20;
        shp2.y = 20;

        var rect:egret.Rectangle = new egret.Rectangle(20,20,30,50);
        shp.mask = rect;
    }
}

 

2: 显示对象遮罩

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

    /**
     * 显示对象可以作为另一个显示对象的遮罩, 作为遮罩的对象最好也添加的舞台中
     * 遮罩后, 被遮罩的显示对象只有和遮罩的显示对象重叠的部分才会显示
     */
    private onAddToStage(event: egret.Event) {

        //画一个红色的正方形
        var square:egret.Shape = new egret.Shape();
        square.graphics.beginFill(0xff0000);
        square.graphics.drawRect(0,0,100,100);
        square.graphics.endFill();
        this.addChild(square);

        //画一个蓝色的圆形
        var circle:egret.Shape = new egret.Shape();
        circle.graphics.beginFill(0x0000ff);
        circle.graphics.drawCircle(25,25,25);
        circle.graphics.endFill();
        this.addChild(circle);
        square.mask = circle;
    }
}

 

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