Para copiar datos de mapas de bits de una imagen a otra, dispone de varios métodos:
clone()
,
copyPixels()
,
copyChannel()
,
draw()
y
drawWithQuality()
(
drawWithQuality
disponibles en Flash Player 11.3 y versiones posteriores; AIR 3.3 y versiones posteriores).
Como indica su nombre, el método
clone()
permite clonar datos de mapas de bits (o tomar muestras de ellos) de un objeto BitmapData a otro. Cuando se le llama, este método devuelve un nuevo objeto BitmapData que es una copia exacta de la instancia original que se ha clonado.
En el siguiente ejemplo se clona una copia de un cuadrado de color naranja (el elemento principal) y se coloca el clon junto al cuadro naranja principal:
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;
El método
copyPixels()
constituye una forma rápida y sencilla de copiar píxeles de un objeto BitmapData a otro. Este método toma una instantánea rectangular (definida por el parámetro
sourceRect
) de la imagen de origen y la copia en un área rectangular distinta (del mismo tamaño). La ubicación del rectángulo recién "pegado" se define mediante el parámetro
destPoint
.
El método
copyChannel()
toma una muestra de un valor de canal de color predefinido (alfa, rojo, verde o azul) de un objeto BitmapData de origen y la copia en un canal de un objeto BitmapData de destino. Llamar a este método no afecta a los demás canales del objeto BitmapData de destino.
Los métodos
draw()
y
drawWithQuality()
dibujan, o procesan, el contenido gráfico de un objeto Sprite, de un clip de película o de otro objeto de visualización de origen en un nuevo mapa de bits. Mediante los parámetros
matrix
,
colorTransform
,
blendMode
y
clipRect
de destino, es posible modificar la forma en la que se representa el nuevo mapa de bits. Este método utiliza el vector procesado en Flash Player y AIR para generar los datos.
Al llamar a
draw()
o a
drawWithQuality()
, se le transfiere el objeto de origen (Sprite, clip de película u otro objeto de visualización) como primer parámetro, tal y como puede verse a continuación:
myBitmap.draw(movieClip);
Si al objeto de origen se le ha aplicado alguna transformación (color, matriz, etc.) después de haber sido cargado originalmente, estas no se copiarán en el nuevo objeto. Para copiar las transformaciones en el nuevo mapa de bits, es necesario copiar el valor de la propiedad
transform
del objeto original en la propiedad
transform
del objeto Bitmap utilizado por el nuevo objeto BitmapData.