Copia de datos de mapas de bits

Flash Player 9 y posterior, Adobe AIR 1.0 y posterior

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.