As3:将重叠的矩形绘制到精灵并应用 alpha

As3: Draw overlapping rectangles to a sprite and apply alpha

我需要为 sprite 绘制 独立 个矩形。但是,如果我将 alpha 应用到我的精灵(精灵将淡入淡出),重叠区域 将变得可见:

        var spBox:Sprite = new Sprite();
        this.addChild(spBox);

        spBox.graphics.beginFill(0x123456)
        spBox.graphics.drawRect(100, 100, 50, 50);
        spBox.graphics.endFill();

        spBox.graphics.beginFill(0x123456)
        spBox.graphics.drawRect(125, 125, 50, 50);
        spBox.graphics.endFill();

有没有办法 compine/flatten/merge 我的精灵的矩形?我想要一个无缝的 aplha 外观。

我怀疑图形对象的部分数据不支持这种功能。

如果两个框都是单独的 DisplayObjects,您可以将 DisplayObjectContainer.blendMode 设置为 BlendMode.LAYER,,从而得到所需的结果。下面是一些示例代码,将矩形的绘图重构为 Box class:

var spBox:Sprite = new Sprite();
this.addChild(spBox);


var a:Box = new Box(50, 50, 0x123456);
a.x = a.y = 100;
spBox.addChild(a);  

var b:Box = new Box(50, 50, 0x123456);
b.x = b.y = 125;
spBox.addChild(b);    

spBox.alpha = .5;
spBox.blendMode = BlendMode.LAYER;

Box class 的相关部分如下所示:

public class Box extends Shape
{
    public function Box(width:Number = 100, height:Number = 100, color:uint = 0)
    {
        graphics.beginFill(color)
        graphics.drawRect(0, 0,  width, height);
        graphics.endFill();
    }
}