Я сделал простой тест, который, кажется, работает:
var square:Sprite = new Sprite();
var circle:Sprite = new Sprite();
var holder:Sprite = new Sprite();
square.graphics.beginFill(0,.5);
square.graphics.drawRect(0,0,100,100);
square.graphics.endFill();
circle.graphics.beginFill(0);
circle.graphics.drawCircle(0,0,50);
circle.graphics.endFill();
addChild(holder);
holder.addChild(square);
holder.addChild(circle);
square.mask = circle;
var cloneData:BitmapData = new BitmapData(holder.width,holder.height,true,0x00FFFFFF);
cloneData.draw(holder);
var clone:Bitmap = new Bitmap(cloneData);
addChild(clone);
clone.x = 30;
Я создаю BitmapData и использую метод draw () для создания клона.
Ключевым моментом являются последние два аргумента в конструкторе BitmapData.
После того, как я передаю holder.width и holder.height, я указываю, что хочу, чтобы bitmapData был прозрачный (true) и имел заливку f прозрачный белый (0x00FFFFFF) в ARGB (альфа-красный-зелено-синий)
Надеюсь, это поможет:)