Pergunta

Eu preciso encontrar uma maneira de copiar um bitmap mascarado. Eu tenho um bitmap no palco, e um elaborado usuário sprite que atua como uma máscara. Eu preciso de captura / copiar o bitmap área mascarada, mantendo a transparência criada pelo mascaramento para codificar, eventualmente, como um png.

Eu não conseguia encontrar documentação sobre como fazer isso usando copyPixels (), ou quaisquer outras direções.

Agradecemos antecipadamente por qualquer ajuda -

b

Foi útil?

Solução

Eu fiz um teste simples que parece funcionar:

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;

Estou criando um BitmapData e usando o empate) método ( para fazer um clone. A coisa chave parece ser os dois últimos argumentos no construtor BitmapData. Depois que eu passar o holder.width e holder.height, eu especificar eu quero o bitmapData ser transparente (true) e ter o preenchimento f ull branco transparente (0x00FFFFFF) em ARGB (alfa-vermelho-verde-azul)

Espero que isso ajude:)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top