Para copiar dados bitmap de uma imagem para a outra, você pode usar vários métodos:
clone()
,
copyPixels()
,
copyChannel()
,
draw()
e
drawWithQuality()
(método
drawWithQuality
disponível no Flash Player 11.3 e superior; AIR 3.3 e superior).
Como o nome sugere, o método
clone()
permite clonar, ou obter uma amostra, dos dados de bitmap de um objeto BitmapData para outro. Quando chamado, o método retorna um novo objeto BitmapData que é um clone exato da ocorrência original do qual foi copiado.
O exemplo a seguir clona uma cópia de um quadrado (pai) laranja e coloca o clone ao lado do quadrado pai original:
import flash.display.Bitmap;
import flash.display.BitmapData;
var myParentSquareBitmap:BitmapData = new BitmapData(100, 100, false, 0x00ff3300);
var myClonedChild:BitmapData = myParentSquareBitmap.clone();
var myParentSquareContainer:Bitmap = new Bitmap(myParentSquareBitmap);
this.addChild(myParentSquareContainer);
var myClonedChildContainer:Bitmap = new Bitmap(myClonedChild);
this.addChild(myClonedChildContainer);
myClonedChildContainer.x = 110;
O método
copyPixels()
é um modo fácil e rápido de copiar pixels de um objeto BitmapData para outro. O método obtém um snapshot retangular (definido pelo parâmetro
sourceRect
) da imagem de origem e a copia para outra área retangular (de tamanho igual). O local do retângulo "colado" recentemente é definido dentro do parâmetro
destPoint
.
O método
copyChannel()
fornece amostras de um valor de canal de cor predefinido (alfa, vermelho, verde ou azul) de um objeto BitmapData de origem e o copia para um canal de um objeto BitmapData de destino. Chamar esse método não afeta os outros canais no objeto BitmapData de destino.
Os métodos
draw()
e
drawWithQuality()
desenham ou renderizam o conteúdo gráfico de um sprite de origem, clipe de filme ou outro objeto de exibição em um novo bitmap. Usando
matrix
,
colorTransform
,
blendMode
e os parâmetros de destino
clipRect
, você pode modificar a forma na qual o novo bitmap é renderizado. Esse método usa o processador de vetor no Flash Player e no AIR para gerar os dados.
Ao chamar
draw()
ou
drawWithQuality()
, você passa o objeto de origem (sprite, clipe de filme ou outro objeto de exibição) como o primeiro parâmetro, como demonstrado aqui:
myBitmap.draw(movieClip);
Se o objeto de origem teve qualquer transformação (cor, matriz etc.) aplicada a ele depois que ele foi originalmente carregado, essas transformações não serão copiadas para o novo objeto. Se você quiser copiar as transformações para o novo bitmap, será necessário copiar o valor da propriedade
transform
do objeto original para a propriedade
transform
do objeto Bitmap que usa o novo objeto BitmapData.