Я вижу, что вы пытаетесь сделать, но я не уверен, почему это не работает для вас.Я создал похожую программу, и она работает, как и ожидалось:
//Imports
import flash.display.Shape;
import flash.display.Sprite;
//Draw Background Rect
var backgroundRect:Shape = new Shape();
backgroundRect.graphics.beginFill(0x000000, 1.0);
backgroundRect.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
backgroundRect.graphics.endFill();
addChild(backgroundRect);
//Build Mask From Circles
var backgroundMask:Sprite = new Sprite();
var circleA:Shape = circle(50, 0xFF0000);
circleA.x = 50;
circleA.y = 50;
var circleB:Shape = circle(50, 0x00FF00);
circleB.x = 100;
circleB.y = 50;
var circleC:Shape = circle(50, 0x0000FF);
circleC.x = 150;
circleC.y = 75;
backgroundMask.addChild(circleA);
backgroundMask.addChild(circleB);
backgroundMask.addChild(circleC);
addChild(backgroundMask);
//Assign Mask
backgroundRect.mask = backgroundMask;
//Create Circle
function circle(radius:uint, color:uint):Shape
{
var result:Shape = new Shape();
result.graphics.beginFill(color, 1.0);
result.graphics.drawCircle(0, 0, radius);
result.graphics.endFill();
return result;
}
Единственное, что я могу думать о том, что части, которые вы добавляете в спрайт маски, перезаписываютсядруг с другом, аналогично тому, что происходит, когда вы перекрываете две или более фигур в одном графическом вызове:
//Imports
import flash.display.Shape;
import flash.display.Sprite;
//Draw Circle
var circleA:Shape = circle(50, 0xFF0000);
circleA.x = 50;
circleA.y = 50;
addChild(circleA);
//Create Circle
function circle(radius:uint, color:uint):Shape
{
var result:Shape = new Shape();
result.graphics.beginFill(color, 1.0);
result.graphics.drawCircle(0, 0, radius);
result.graphics.drawCircle(50, 50, radius);
result.graphics.endFill();
return result;
}