Hello,
I've made a simple test that seems to work:
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;
I'm creating a BitmapData and using the draw() method to make a clone.
The key thing seems to be the last two arguments in the BitmapData constructor.
After I pass the holder.width and holder.height, I specify I want the bitmapData to be transparent (true) and have the fill f*ull transparent white (0x00FFFFFF)* in ARGB (alpha-red-green-blue)
Hope this helps :)