Paqueteflash.display
Clasepublic class BitmapData
HerenciaBitmapData Inheritance Object
Implementa IBitmapDrawable

Versión del lenguaje: ActionScript 3.0
Versión del reproductor: Flash Player 9

La clase BitmapData le permite trabajar con los datos (píxeles) de un objeto Bitmap. Puede utilizar los métodos de la clase BitmapData para crear imágenes de mapa de bits transparentes u opacas de tamaño arbitrario y manipularlas de distintas formas en tiempo de ejecución. También puede obtener acceso al BitmapData correspondiente a una imagen de mapa de bits que ha cargado con la clase flash.display.Loader.

Esta clase permite separar operaciones de representación de mapa de bits de la rutinas internas de actualización de la visualización de Flash Player. Con la manipulación directa de un objeto BitmapData es posible crear imágenes complejas sin recargar cada fotograma al redibujar constantemente el contenido de datos vectoriales.

Los métodos de la clase BitmapData admiten efectos que no están disponibles a través de los filtros disponibles para los objetos de visualización que no sean mapas de bits.

Un objeto BitmapData contiene una matriz de datos de píxeles. Estos datos pueden representar un mapa de bits completamente opaco o un mapa de bits transparente que contiene datos del canal alfa. Ambos tipos de objetos BitmapData se almacenan como búfer de enteros de 32 bits. Cada entero de 32 bits determina las propiedades de un píxel único del mapa de bits.

Cada entero de 32 bits es una combinación de cuatro valores de canal de 8 bits (de cero a 255) que describen los valores de transparencia alfa, y rojo, verde y azul (ARGB) del píxel. (En el caso de valores ARGB, el byte más significativo representa el valor del canal alfa, seguido del rojo, el verde y el azul.)

Los cuatro canales (alfa, rojo, verde y azul) se representan como números cuando se utilizan con el método BitmapData.copyChannel() o las propiedades DisplacementMapFilter.componentX y DisplacementMapFilter.componentY, y estos números se representan mediante las siguientes constantes en la clase BitmapDataChannel:

Puede asociar objetos BitmapData a un objeto Bitmap empleando la propiedad bitmapData del objeto Bitmap.

Se puede utilizar un objeto BitmapData para rellenar un objeto Graphics mediante el método Graphics.beginBitmapFill().

Un objeto BitmapData puede tener una altura y una anchura máximas de 2.880 píxeles.

Las llamadas a cualquier método o propiedad de un objeto BitmapData emiten un error ArgumentError si el objeto BitmapData no es válido (por ejemplo, si tiene height == 0 y width == 0) o se ha eliminado mediante dispose().

Ver los ejemplos

Véase también

flash.display.Bitmap.bitmapData
flash.display.Graphics.beginBitmapFill()
flash.display.Loader


Propiedades públicas
 PropiedadDefinido por
 Inheritedconstructor : Object
Una referencia a la clase de objeto o función constructora para una instancia de objeto determinada.
Object
  height : int
[read-only] Altura de la imagen de mapa de bits, expresada en píxeles.
BitmapData
 Inheritedprototype : Object
[static] Una referencia al objeto prototipo de una clase u objeto de función.
Object
  rect : Rectangle
[read-only] Rectángulo que define el tamaño y la ubicación de la imagen de mapa de bits.
BitmapData
  transparent : Boolean
[read-only] Define si la imagen de mapa de bits admite transparencia por píxel.
BitmapData
  width : int
[read-only] Anchura de la imagen de mapa de bits, expresada en píxeles.
BitmapData
Métodos públicos
 MétodoDefinido por
  
BitmapData(width:int, height:int, transparent:Boolean = true, fillColor:uint = 0xFFFFFFFF)
Crea un nuevo objeto BitmapData con una determinada anchura y altura.
BitmapData
  
applyFilter(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, filter:BitmapFilter):void
Toma una imagen de origen y un objeto de filtro y genera la imagen filtrada.
BitmapData
  
Devuelve un objeto BitmapData nuevo que es un clon de la instancia original con una copia exacta del mapa de bits contenido.
BitmapData
  
Ajusta los valores de color en una determinada área de una imagen de mapa de bits mediante un objeto ColorTransform.
BitmapData
  
compare(otherBitmapData:BitmapData):Object
Compara dos objetos BitmapData.
BitmapData
  
copyChannel(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, sourceChannel:uint, destChannel:uint):void
Transfiere datos de un canal de otro objeto BitmapData o del objeto BitmapData actual a un canal del objeto BitmapData actual.
BitmapData
  
copyPixels(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, alphaBitmapData:BitmapData = null, alphaPoint:Point = null, mergeAlpha:Boolean = false):void
Proporciona una rutina rápida para la manipulación de píxeles entre imágenes sin efectos de color, rotación ni expansión.
BitmapData
  
Libera memoria que se utiliza para almacenar el objeto BitmapData.
BitmapData
  
draw(source:IBitmapDrawable, matrix:Matrix = null, colorTransform:ColorTransform = null, blendMode:String = null, clipRect:Rectangle = null, smoothing:Boolean = false):void
Dibuja el objeto de visualización de origen en la imagen de mapa de bits mediante el procesador de vectores de Flash Player.
BitmapData
  
fillRect(rect:Rectangle, color:uint):void
Rellena un área rectangular de píxeles con un determinado color ARGB.
BitmapData
  
floodFill(x:int, y:int, color:uint):void
Realiza una operación de relleno en una imagen empezando por una coordenada (x, y) y rellenando con un determinado color.
BitmapData
  
Determina el rectángulo de destino al que afecta la llamada al método applyFilter(), dados un objeto BitmapData, un rectángulo de origen y un objeto de filtro.
BitmapData
  
getColorBoundsRect(mask:uint, color:uint, findColor:Boolean = true):Rectangle
Determina una zona rectangular que encierra totalmente todos los píxeles de un color determinado dentro de la imagen de mapa de bits (si el parámetro findColor se establece como true) o encierra totalmente todos los píxeles que no incluyen el color especificado (si el parámetro findColor se establece como false).
BitmapData
  
Devuelve un entero que representa un valor de píxel RGB de un objeto BitmapData en un punto específico (x, y).
BitmapData
  
Devuelve un valor de color ARGB que contiene datos del canal alfa y datos de RGB.
BitmapData
  
Genera una matriz de bytes de una zona rectangular de datos de píxeles.
BitmapData
 Inherited
Indica si un objeto tiene definida una propiedad especificada.
Object
  
hitTest(firstPoint:Point, firstAlphaThreshold:uint, secondObject:Object, secondBitmapDataPoint:Point = null, secondAlphaThreshold:uint = 1):Boolean
Detecta la zona activa a nivel de píxeles entre una imagen de mapa de bits y un punto, un rectángulo u otra imagen de mapa de bits.
BitmapData
 Inherited
Indica si hay una instancia de la clase Object en la cadena de prototipo del objeto especificado como parámetro.
Object
  
Bloquea una imagen de manera que los objetos que hacen referencia al objeto BitmapData como, por ejemplo, los objetos Bitmap, no se actualicen cuando cambia este objeto BitmapData.
BitmapData
  
merge(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, redMultiplier:uint, greenMultiplier:uint, blueMultiplier:uint, alphaMultiplier:uint):void
Realiza una mezcla por canal de una imagen de origen a una imagen de destino.
BitmapData
  
noise(randomSeed:int, low:uint = 0, high:uint = 255, channelOptions:uint = 7, grayScale:Boolean = false):void
Rellena una imagen con píxeles que representan ruido aleatorio.
BitmapData
  
paletteMap(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, redArray:Array = null, greenArray:Array = null, blueArray:Array = null, alphaArray:Array = null):void
Reasigna los valores del canal de color en una imagen proporcionada a cuatro conjuntos de datos de la paleta de colores, una por cada canal.
BitmapData
  
perlinNoise(baseX:Number, baseY:Number, numOctaves:uint, randomSeed:int, stitch:Boolean, fractalNoise:Boolean, channelOptions:uint = 7, grayScale:Boolean = false, offsets:Array = null):void
Genera una imagen de ruido Perlin.
BitmapData
  
pixelDissolve(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, randomSeed:int = 0, numPixels:int = 0, fillColor:uint = 0):int
Realiza una disolución de píxeles de una imagen de origen a una imagen de destino o utilizando la misma imagen.
BitmapData
 Inherited
Indica si existe la propiedad especificada y si es enumerable.
Object
  
scroll(x:int, y:int):void
Desplaza una imagen una determinada cantidad de píxeles (x, y).
BitmapData
  
setPixel(x:int, y:int, color:uint):void
Establece un solo píxel de un objeto BitmapData.
BitmapData
  
setPixel32(x:int, y:int, color:uint):void
Establece los valores de color y transparencia alfa de un solo píxel de un objeto BitmapData.
BitmapData
  
setPixels(rect:Rectangle, inputByteArray:ByteArray):void
Convierte una matriz de bytes en una zona rectangular de datos de píxeles.
BitmapData
 Inherited
Establece la disponibilidad de una propiedad dinámica para operaciones de bucle.
Object
  
threshold(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, operation:String, threshold:uint, color:uint = 0, mask:uint = 0xFFFFFFFF, copySource:Boolean = false):uint
Prueba valores de píxel en una imagen con un umbral especificado y define los píxeles que se pasan para probar los valores del nuevo color.
BitmapData
 Inherited
Devuelve la representación de cadena del objeto especificado.
Object
  
unlock(changeRect:Rectangle = null):void
Desbloquea una imagen de manera que los objetos que hacen referencia al objeto BitmapData como, por ejemplo, los objetos Bitmap, se actualicen cuando cambia este objeto BitmapData.
BitmapData
 Inherited
Devuelve el valor simple del objeto especificado.
Object
Información sobre propiedades
heightpropiedad
height:int  [read-only]

Versión del lenguaje: ActionScript 3.0
Versión del reproductor: Flash Player 9

Altura de la imagen de mapa de bits, expresada en píxeles.


Implementación
    public function get height():int
rectpropiedad 
rect:Rectangle  [read-only]

Versión del lenguaje: ActionScript 3.0
Versión del reproductor: Flash Player 9

Rectángulo que define el tamaño y la ubicación de la imagen de mapa de bits. Las partes superior e izquierda del rectángulo son 0; el ancho y el alto son iguales al ancho y al alto en píxeles del objeto BitmapData.


Implementación
    public function get rect():Rectangle
transparentpropiedad 
transparent:Boolean  [read-only]

Versión del lenguaje: ActionScript 3.0
Versión del reproductor: Flash Player 9

Define si la imagen de mapa de bits admite transparencia por píxel. Solamente puede definir este valor cuando cree un objeto BitmapData pasando true para el parámetro transparent del constructor. Posteriormente, tras crear un objeto BitmapData, puede comprobar si admite transparencia por píxel determinando si el valor de la propiedad transparent es true.


Implementación
    public function get transparent():Boolean
widthpropiedad 
width:int  [read-only]

Versión del lenguaje: ActionScript 3.0
Versión del reproductor: Flash Player 9

Anchura de la imagen de mapa de bits, expresada en píxeles.


Implementación
    public function get width():int
Información sobre constructores
BitmapData()constructor
public function BitmapData(width:int, height:int, transparent:Boolean = true, fillColor:uint = 0xFFFFFFFF)

Versión del lenguaje: ActionScript 3.0
Versión del reproductor: Flash Player 9

Crea un nuevo objeto BitmapData con una determinada anchura y altura. Si especifica un valor para el parámetro fillColor, todos los píxeles del mapa de bits utilizan ese color.

De forma predeterminada, el mapa de bits se crea como transparente, a menos que pase el valor false para el parámetro transparent. Una vez que se ha creado un mapa de bits opaco, no se puede cambiar a uno transparente. Todos los píxeles de un mapa de bits opaco utilizan 24 bits de información del canal de color. Si define el mapa de bits como transparente, todos los píxeles utilizan 32 bits de información del canal de color, incluido un canal de transparencia alfa.

Un objeto BitmapData puede tener una altura y una anchura máximas de 2.880 píxeles. Si especifica un valor de anchura o altura mayor que 2.880, no se creará una instancia nueva.

Parámetros
width:int — Anchura de la imagen de mapa de bits, expresada en píxeles.
 
height:int — Altura de la imagen de mapa de bits, expresada en píxeles.
 
transparent:Boolean (default = true) — Especifica si la imagen de mapa de bits admite transparencia por píxel. El valor predeterminado es true (transparente). Para crear un mapa de bits totalmente transparente, defina el valor del parámetro transparent como true y el valor del parámetro fillColor con 0x00000000 (o a 0). La configuración de la propiedad transparent como false puede dar como resultado pequeñas mejoras en el rendimiento de la visualización.
 
fillColor:uint (default = 0xFFFFFFFF) — Valor de color ARGB de 32 bits que se utiliza para rellenar el área de la imagen de mapa de bits. El valor predeterminado es 0xFFFFFFFF (blanco sólido).

Emite
ArgumentError — la anchura y/o la altura no son válidas (menor o igual que cero, mayor que 2880)
Información sobre métodos
applyFilter()método
public function applyFilter(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, filter:BitmapFilter):void

Versión del lenguaje: ActionScript 3.0
Versión del reproductor: Flash Player 9

Toma una imagen de origen y un objeto de filtro y genera la imagen filtrada.

Este método se basa en el comportamiento de los objetos de filtro incorporados, que determinan el rectángulo de destino que se ve afectado por un rectángulo de origen de entrada.

Después de aplicar un filtro, la imagen resultante puede ser mayor que la imagen de entrada. Por ejemplo, si se utiliza una clase BlurFilter para desenfocar un rectángulo de origen de (50,50,100,100) y un punto de destino de (10,10), el área que cambia en la imagen de destino será mayor que (10,10,60,60) debido al desenfoque. Esto sucede internamente durante la llamada a applyFilter().

Si el parámetro sourceRect del parámetro sourceBitmapData es una región interior, como (50,50,100,100) en una imagen de 200 x 200, el filtro utilizará los píxeles de origen fuera del parámetro sourceRect para generar el rectángulo de destino.

Si el objeto BitmapData y el objeto especificado como parámetro sourceBitmapData son el mismo objeto, Flash Player utilizará una copia temporal del objeto para ejecutar el filtro. Para lograr el máximo rendimiento, evite esta situación.

Parámetros

sourceBitmapData:BitmapData — La imagen de mapa de bits de entrada que se va a utilizar. La imagen de origen puede ser otro objeto BitmapData o puede hacer referencia a la instancia de BitmapData actual.
 
sourceRect:Rectangle — Un rectángulo que define el área de la imagen de origen que se va a utilizar como entrada.
 
destPoint:Point — El punto de la imagen de destino (la instancia de BitmapData actual) que corresponde a la esquina superior izquierda del rectángulo de origen.
 
filter:BitmapFilter — El objeto de filtro que se utilizará para realizar la operación de filtrado. Cada tipo de filtro tiene determinados requisitos, a saber:
  • BlurFilter: este filtro puede utilizar imágenes de origen y destino que son opacas o transparentes. Si no coinciden los formatos de las imágenes, la copia de la imagen de origen que se realiza durante el filtrado coincide con el formato de la imagen de destino.
  • BevelFilter, DropShadowFilter, GlowFilter, ChromeFilter: la imagen de destino de estos filtros debe ser una imagen transparente. Al llamar a DropShadowFilter o GlowFilter, se crea una imagen que contiene los datos del canal alfa de la sombra o del iluminado. No se crea la sombra sobre la imagen de destino. Si se utiliza alguno de estos filtros con una imagen de destino opaca, se devuelve una excepción (ActionScript 3.0).
  • ConvolutionFilter: este filtro puede utilizar imágenes de origen y destino opacas o transparentes.
  • ColorMatrixFilter: este filtro puede utilizar imágenes de origen y destino opacas o transparentes.
  • DisplacementMapFilter: este filtro puede utilizar imágenes de origen y destino opacas o transparentes, pero el formato de las imágenes de origen y destino debe ser el mismo.


Emite
TypeError — sourceBitmapData, sourceRect, destPoint o el filtro tienen el valor null.
 
IllegalOperationError — La transparencia de los objetos BitmapData no es compatible con la operación de filtro.

Véase también


Ejemplo

En el ejemplo siguiente, se muestra cómo aplicar un filtro de desenfoque a una instancia de BitmapData:

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Point;
import flash.geom.Rectangle;
import flash.filters.BlurFilter;

var bmd:BitmapData = new BitmapData(80, 30, false, 0xFFCC00);
var rect:Rectangle = new Rectangle(10, 10, 40, 10);
bmd.fillRect(rect, 0xFF0000);

var pt:Point = new Point(10, 10);
var filter:BlurFilter = new BlurFilter();
bmd.applyFilter(bmd, rect, pt, filter);

var bm:Bitmap = new Bitmap(bmd);
addChild(bm);
clone()método 
public function clone():BitmapData

Versión del lenguaje: ActionScript 3.0
Versión del reproductor: Flash Player 9

Devuelve un objeto BitmapData nuevo que es un clon de la instancia original con una copia exacta del mapa de bits contenido.

Valor devuelto
BitmapData — Un objeto BitmapData nuevo que es idéntico al original.

Ejemplo

En el ejemplo siguiente, se indica cómo clonar una instancia de BitmapData y se muestra que, cuando se modifica la instancia de BitmapData clonada, el original permanece sin cambios:

import flash.display.Bitmap;
import flash.display.BitmapData;

var bmd1:BitmapData = new BitmapData(100, 80, false, 0x00000000);
var bmd2:BitmapData = bmd1.clone();

bmd1.setPixel32(1, 1, 0xFFFFFFFF);

trace(bmd1.getPixel32(1, 1).toString(16)); // ffffffff
trace(bmd2.getPixel32(1, 1).toString(16)); // ff000000

var bm1:Bitmap = new Bitmap(bmd1);
this.addChild(bm1);

var bm2:Bitmap = new Bitmap(bmd2);
bm2.x = 110;
this.addChild(bm2);
colorTransform()método 
public function colorTransform(rect:Rectangle, colorTransform:ColorTransform):void

Versión del lenguaje: ActionScript 3.0
Versión del reproductor: Flash Player 9

Ajusta los valores de color en una determinada área de una imagen de mapa de bits mediante un objeto ColorTransform. Si el rectángulo coincide con los límites de la imagen de mapa de bits, este método transformará los valores de color de toda la imagen.

Parámetros

rect:Rectangle — Un objeto Rectangle que define el área de la imagen en la que se aplica el objeto ColorTransform.
 
colorTransform:ColorTransform — Un objeto ColorTransform que describe los valores de transformación de color que se van a aplicar.


Emite
TypeError — rect o colorTransform tienen el valor null.

Véase también


Ejemplo

En el ejemplo siguiente, se muestra cómo aplicar una transformación de color a la mitad izquierda (rectángulo) de un objeto BitmapData:

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.ColorTransform;

var bmd:BitmapData = new BitmapData(80, 30, false, 0xFF0000);

var cTransform:ColorTransform = new ColorTransform();
cTransform.alphaMultiplier = 0.5
var rect:Rectangle = new Rectangle(0, 0, 40, 30);
bmd.colorTransform(rect, cTransform);

var bm:Bitmap = new Bitmap(bmd);
addChild(bm);
compare()método 
public function compare(otherBitmapData:BitmapData):Object

Versión del lenguaje: ActionScript 3.0
Versión del reproductor: Flash Player 9

Compara dos objetos BitmapData. Si los dos objetos BitmapData tienen las mismas dimensiones (anchura y altura), el método devolverá un nuevo objeto BitmapData, en el que cada píxel es la "diferencia" entre los píxeles de los dos objetos de origen:

Por ejemplo, veamos los dos objetos BitmapData siguientes:

  var bmd1:BitmapData = new BitmapData(50, 50, true, 0xFFFF8800);
  var bmd2:BitmapData = new BitmapData(50, 50, true, 0xCCCC6600);
  var diffBmpData:BitmapData = bmd1.compare(bmd2) as BitmapData;
  trace ("0x" + diffBmpData.getPixel(0,0).toString(16); // 0x332200
  

Nota: los colores utilizados para rellenar los dos objetos BitmapData tienen valores RGB ligeramente diferentes (0xFF8800 y 0xCC6600). El resultado del método compare() es un nuevo objeto BitmapData en el que cada píxel muestra la diferencia de los valores RGB entre los dos mapas de bits.

Piense en los dos objetos BitmapData siguientes en los que los colores RGB son iguales pero los valores alfa son diferentes:

  var bmd1:BitmapData = new BitmapData(50, 50, true, 0xFFFFAA00);
  var bmd2:BitmapData = new BitmapData(50, 50, true, 0xCCFFAA00);
  var diffBmpData:BitmapData = bmd1.compare(bmd2) as BitmapData;
  trace ("0x" + diffBmpData.getPixel32(0,0).toString(16); // 0x33ffffff
  

El resultado del método compare() es un nuevo objeto BitmapData en el que cada píxel muestra la diferencia de los valores alfa entre los dos mapas de bits.

Si los objetos BitmapData son equivalentes (con la misma anchura y altura e idénticos valores de píxeles), el método devolverá el número 0.

Si la anchura de los objetos BitmapData no es la misma, el método devolverá el número -3.

Si la altura de los objetos BitmapData no es la misma pero la anchura sí, el método devolverá el número -4.

En el ejemplo siguiente, se comparan dos objetos Bitmap con anchuras diferentes (50 y 60):

  var bmd1:BitmapData = new BitmapData(100, 50, false, 0xFFFF0000);
  var bmd2:BitmapData = new BitmapData(100, 60, false, 0xFFFFAA00);
  trace(bmd1.compare(bmd2)); // -4
  

Parámetros

otherBitmapData:BitmapData — El objeto BitmapData que se va a comparar con el objeto BitmapData de origen.

Valor devuelto
Object — Si los dos objetos BitmapData tienen las mismas dimensiones (anchura y altura), el método devolverá un nuevo objeto BitmapData con la diferencia entre los dos (consulte la descripción principal). Si los objetos BitmapData son equivalentes, el método devolverá el número 0. Si la anchura de los objetos BitmapData no es la misma, el método devolverá el número -3. Si la altura de los objetos BitmapData no es la misma, el método devolverá el número -4.

Emite
TypeError — otherBitmapData tiene el valor null.

Ejemplo

En el ejemplo siguiente, se muestra el valor de un píxel del objeto BitmapData, resultado de comparar dos objetos BitmapData de las mismas dimensiones:

import flash.display.Bitmap;
import flash.display.BitmapData;

var bmd1:BitmapData = new BitmapData(50, 50, true, 0xFFFFAA00);
var bmd2:BitmapData = new BitmapData(50, 50, true, 0xCCFFAA00);
var diffBmpData:BitmapData = BitmapData(bmd1.compare(bmd2));
var diffValue:String = diffBmpData.getPixel32(1, 1).toString(16);
trace(diffValue); // 33ffffff

var bm1:Bitmap = new Bitmap(bmd1);
addChild(bm1);
var bm2:Bitmap = new Bitmap(bmd2);
addChild(bm2);
bm2.x = 60;
copyChannel()método 
public function copyChannel(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, sourceChannel:uint, destChannel:uint):void

Versión del lenguaje: ActionScript 3.0
Versión del reproductor: Flash Player 9

Transfiere datos de un canal de otro objeto BitmapData o del objeto BitmapData actual a un canal del objeto BitmapData actual. Se mantendrán todos los datos de los demás canales del objeto BitmapData de destino.

Los valores del canal de origen y del canal de destino pueden ser los siguientes:

Parámetros

sourceBitmapData:BitmapData — La imagen de mapa de bits de entrada que se va a utilizar. La imagen de origen puede ser otro objeto BitmapData o puede hacer referencia al objeto BitmapData actual.
 
sourceRect:Rectangle — El objeto Rectangle de origen. Especifique un rectángulo de origen con un tamaño menor que el tamaño global del objeto BitmapData si sólo desea copiar los datos del canal de un área menor del mapa de bits.
 
destPoint:Point — El objeto Point de destino que representa la esquina superior izquierda del área rectangular donde se situarán los nuevos datos del canal. Especifique un punto distinto de (0,0) si sólo desea copiar los datos del canal de un área a otra de la imagen de destino.
 
sourceChannel:uint — El canal de origen. Utilice un valor de la clase BitmapDataChannel (BitmapDataChannel.RED, BitmapDataChannel.BLUE, BitmapDataChannel.GREEN, BitmapDataChannel.ALPHA).
 
destChannel:uint — El canal de destino. Utilice un valor de la clase BitmapDataChannel (BitmapDataChannel.RED, BitmapDataChannel.BLUE, BitmapDataChannel.GREEN, BitmapDataChannel.ALPHA).


Emite
TypeError — sourceBitmapData, sourceRect o destPoint tienen el valor null.

Véase también


Ejemplo

En el ejemplo siguiente, se muestra cómo copiar el canal rojo de un objeto BitmapData en su propio canal azul en una región de 20 x 20 píxeles:

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.Point;

var bmd:BitmapData = new BitmapData(100, 80, false, 0x00FF0000);

var rect:Rectangle = new Rectangle(0, 0, 20, 20);
var pt:Point = new Point(10, 10);
bmd.copyChannel(bmd, rect, pt, BitmapDataChannel.RED, BitmapDataChannel.BLUE);

var bm:Bitmap = new Bitmap(bmd);
this.addChild(bm);    
copyPixels()método 
public function copyPixels(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, alphaBitmapData:BitmapData = null, alphaPoint:Point = null, mergeAlpha:Boolean = false):void

Versión del lenguaje: ActionScript 3.0
Versión del reproductor: Flash Player 9

Proporciona una rutina rápida para la manipulación de píxeles entre imágenes sin efectos de color, rotación ni expansión. Este método copia un área rectangular de una imagen de origen en un área rectangular del mismo tamaño en el punto de destino del objeto BitmapData de destino.

Si incluye los parámetros alphaBitmap y alphaPoint, puede utilizar una imagen secundaria como origen de alfa para la imagen de origen. Si la imagen de origen tiene datos alfa, se utilizarán los dos conjuntos de datos alfa para componer píxeles de la imagen de origen en la imagen de destino. El parámetro alphaPoint es el punto de la imagen alfa que corresponde a la esquina superior izquierda del rectángulo de origen. Los píxeles que queden fuera de la intersección de la imagen de origen y la imagen alfa no se copiarán en la imagen de destino.

La propiedad mergeAlpha controla si se utiliza el canal alfa cuando se copia una imagen transparente sobre otra imagen transparente. Para copiar píxeles con los datos del canal alfa, defina la propiedad mergeAlpha como true. De forma predeterminada, la propiedad mergeAlpha es false.

Parámetros

sourceBitmapData:BitmapData — La imagen de mapa de bits de entrada desde la que se van a copiar píxeles. La imagen de origen puede ser otra instancia de BitmapData o puede hacer referencia a la instancia de BitmapData actual.
 
sourceRect:Rectangle — Un rectángulo que define el área de la imagen de origen que se va a utilizar como entrada.
 
destPoint:Point — El punto de destino que representa la esquina superior izquierda del área rectangular donde se sitúan los nuevos píxeles.
 
alphaBitmapData:BitmapData (default = null) — Un origen secundario del objeto BitmapData de alfa.
 
alphaPoint:Point (default = null) — El punto del origen del objeto BitmapData de alfa que corresponde a la esquina superior izquierda del parámetro sourceRect.
 
mergeAlpha:Boolean (default = false) — Para utilizar el canal alfa, defina el valor como true. Para copiar píxeles sin el canal alfa, defina el valor como false.


Emite
TypeError — sourceBitmapData, sourceRect o destPoint tienen el valor null.

Ejemplo

En el ejemplo siguiente, se muestra cómo copiar píxeles de una región de 20 x 20 píxeles de un objeto BitmapData en otro objeto BitmapData:

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.Point;

var bmd1:BitmapData = new BitmapData(40, 40, false, 0x000000FF);
var bmd2:BitmapData = new BitmapData(80, 40, false, 0x0000CC44);

var rect:Rectangle = new Rectangle(0, 0, 20, 20);
var pt:Point = new Point(10, 10);
bmd2.copyPixels(bmd1, rect, pt);

var bm1:Bitmap = new Bitmap(bmd1);
this.addChild(bm1);
var bm2:Bitmap = new Bitmap(bmd2);
this.addChild(bm2);
bm2.x = 50;
dispose()método 
public function dispose():void

Versión del lenguaje: ActionScript 3.0
Versión del reproductor: Flash Player 9

Libera memoria que se utiliza para almacenar el objeto BitmapData.

Cuando se llama al método dispose() para una imagen, la anchura y la altura de la imagen se establecen en 0. Todas las llamadas posteriores a los métodos o propiedades de esta instancia de BitmapData fallarán y se emitirá una excepción.


Ejemplo

En el ejemplo siguiente, se muestra el efecto de llamar al método de un objeto BitmapData tras una llamada al método dispose() (se emite una excepción):
import flash.display.BitmapData;

var myBitmapData:BitmapData = new BitmapData(100, 80, false, 0x000000FF);
trace(myBitmapData.getPixel(1, 1)); // 255 == 0xFF

myBitmapData.dispose();
try {
    trace(myBitmapData.getPixel(1, 1));
} catch (error:Error) {
    trace(error); // ArgumentError
}
draw()método 
public function draw(source:IBitmapDrawable, matrix:Matrix = null, colorTransform:ColorTransform = null, blendMode:String = null, clipRect:Rectangle = null, smoothing:Boolean = false):void

Versión del lenguaje: ActionScript 3.0
Versión del reproductor: Flash Player 9

Dibuja el objeto de visualización source en la imagen de mapa de bits empleando el procesador de vectores de Flash Player. Puede especificar matrix, colorTransform, blendMode y un parámetro clipRect de destino para controlar cómo se realiza la representación. También puede especificar si el mapa de bits se debe suavizar cuando se escala (esto sólo funciona si el objeto de origen es un objeto BitmapData).

Este método corresponde directamente a cómo se dibujan los objetos con el procesador de vectores estándar para objetos en la interfaz de la herramienta de edición.

El objeto de visualización de origen no utiliza ninguna de sus transformaciones aplicadas para esta llamada. Se trata tal como se encuentra en la biblioteca o el archivo, sin transformación de matriz, transformación de color ni modo de mezcla. Para dibujar un objeto de visualización (como, por ejemplo, un clip de película) empleando sus propias propiedades de transformación, puede copiar su objeto de propiedad transform en la propiedad transform del objeto Bitmap que utiliza el objeto BitmapData.

Nota: el objeto source y (en el caso de un objeto Sprite o MovieClip) todos sus objetos secundarios deben proceder del mismo dominio que el origen de la llamada o estar en un archivo SWF que sea accesible al origen de la llamada mediante la llamada al método Security.allowDomain(). Si no se cumplen estas condiciones, el método draw() no dibujará nada.

Este método se admite a través de RTMP en Flash Player Update 3 y versiones posteriores. Puede controlar el acceso a transmisiones en Flash Media Server en un script del lado del servidor. Para más información, consulte las propiedades Client.audioSampleAccess y Client.videoSampleAccess en la referencia del lenguaje ActionScript del servidor para Adobe Flash Media Server.

Parámetros

source:IBitmapDrawable — El objeto de visualización u objeto BitmapData que debe dibujarse en el objeto BitmapData. (Las clases DisplayObject y BitmapData implementan la interfaz IBitmapDrawable.)
 
matrix:Matrix (default = null) — Un objeto Matrix empleado para escalar, rotar o convertir las coordenadas del mapa de bits. Si no desea aplicar una transformación de matriz a la imagen, establezca este parámetro con una matriz de identidad, creada con el constructor new Matrix() predeterminado o pase el valor null.
 
colorTransform:ColorTransform (default = null) — Un objeto ColorTransform empleado para ajustar los valores de color del mapa de bits. Si no se proporciona ningún objeto, no se transformarán los colores de la imagen de mapa de bits. Si tiene que pasar este parámetro pero no desea transformar la imagen, defina el parámetro con un objeto ColorTransform creado mediante el constructor new ColorTransform() predeterminado.
 
blendMode:String (default = null) — Un valor de cadena, de la clase flash.display.BlendMode, que especifica el modo de mezcla que debe aplicarse al mapa de bits resultante.
 
clipRect:Rectangle (default = null) — Un objeto Rectangle que define el área del objeto de origen que se va a dibujar. Si no proporciona este valor, no se producirá recorte y se dibujará el objeto de origen completo.
 
smoothing:Boolean (default = false) — Un valor booleano que determina si se suavizará un objeto BitmapData cuando se escale o gire, debido a un ajuste de escala o rotación en el parámetro matrix. El parámetro smoothing sólo se aplica si el parámetro source es un objeto BitmapData. Si smoothing se establece como false, la imagen BitmapData girada o escalada puede tener un aspecto pixelado o dentado. Por ejemplo, las dos imágenes siguientes utilizan el mismo objeto BitmapData para el parámetro source, pero el parámetro smoothing se establece como true a la izquierda y como false a la derecha:

Dibujar un mapa de bits con smoothing definido como true lleva más tiempo que hacerlo con smoothing definido como false.


Emite
ArgumentError — El parámetro source no es un objeto BitmapData o DisplayObject.
 
SecurityError — El objeto source y (en el caso de un objeto Sprite o MovieClip) todos sus objetos secundarios no proceden del mismo dominio que el origen de la llamada y no están en un archivo SWF que sea accesible al origen de la llamada mediante la llamada al método Security.allowDomain().
 
ArgumentError — El origen tiene el valor null o no es un objeto IBitmapDrawable válido.

Véase también


Ejemplo

En el ejemplo siguiente, se muestra cómo dibujar un objeto TextField en un objeto BitmapData:

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.text.TextField;

var tf:TextField = new TextField();
tf.text = "bitmap text";

var myBitmapData:BitmapData = new BitmapData(80, 20);
myBitmapData.draw(tf);
var bmp:Bitmap = new Bitmap(myBitmapData);
this.addChild(bmp);
fillRect()método 
public function fillRect(rect:Rectangle, color:uint):void

Versión del lenguaje: ActionScript 3.0
Versión del reproductor: Flash Player 9

Rellena un área rectangular de píxeles con un determinado color ARGB.

Parámetros

rect:Rectangle — El área rectangular que se va a rellenar.
 
color:uint — El valor de color ARGB que rellena el área. Los colores ARGB se especifican a menudo en formato hexadecimal, como 0xFF336699.


Emite
TypeError — rect tiene el valor null.

Véase también


Ejemplo

En el ejemplo siguiente, se muestra cómo rellenar de azul una región rectangular de un objeto BitmapData:

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Rectangle;

var myBitmapData:BitmapData = new BitmapData(40, 40, false, 0x0000FF00);

var rect:Rectangle = new Rectangle(0, 0, 20, 20);
myBitmapData.fillRect(rect, 0x0000FF);

var bm:Bitmap = new Bitmap(myBitmapData);
addChild(bm);
floodFill()método 
public function floodFill(x:int, y:int, color:uint):void

Versión del lenguaje: ActionScript 3.0
Versión del reproductor: Flash Player 9

Realiza una operación de relleno en una imagen empezando por una coordenada (x, y) y rellenando con un determinado color. El método floodFill() es similar a la herramienta cubo de pintura que incorporan muchos programas de dibujo. El color es un color ARGB que contiene información alfa y de color.

Parámetros

x:int — La coordenada x de la imagen.
 
y:int — La coordenada y de la imagen.
 
color:uint — El color ARGB que se va a utilizar como relleno.


Ejemplo

En el ejemplo siguiente, se muestra cómo rellenar de rojo una región de un objeto BitmapData, es decir, la región que rodea al píxel definido por el punto (10, 10) en el que todos los colores coinciden con el color de ese punto.

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Rectangle;

var myBitmapData:BitmapData = new BitmapData(40, 40, false, 0x0000FF00);

var rect:Rectangle = new Rectangle(0, 0, 20, 20);
myBitmapData.fillRect(rect, 0x000000FF);
rect = new Rectangle(15, 15, 25, 25);
myBitmapData.fillRect(rect, 0x000000FF);

myBitmapData.floodFill(10, 10, 0x00FF0000);

var bm:Bitmap = new Bitmap(myBitmapData);
addChild(bm);
generateFilterRect()método 
public function generateFilterRect(sourceRect:Rectangle, filter:BitmapFilter):Rectangle

Versión del lenguaje: ActionScript 3.0
Versión del reproductor: Flash Player 9

Determina el rectángulo de destino al que afecta la llamada applyFilter(), dados un objeto BitmapData, un rectángulo de origen y un objeto de filtro.

Por ejemplo, un filtro de desenfoque suele afectar a un área mayor que la imagen original. Una imagen de 100 x 200 píxeles que se filtra mediante una instancia BlurFilter predeterminada, donde blurX = blurY = 4, genera un rectángulo de destino de (-2,-2,104,204). El método generateFilterRect() permite conocer el tamaño de este rectángulo de destino de antemano para poder ajustar el tamaño de la imagen de destino convenientemente antes de una operación de filtro.

Algunos filtros recortan su rectángulo de destino de acuerdo con el tamaño de la imagen de origen. Por ejemplo, un DropShadow interior no genera un resultado mayor que su imagen de origen. En esta API, se utiliza como límite de origen el objeto BitmapData y no el parámetro rect de origen.

Parámetros

sourceRect:Rectangle — Un rectángulo que define el área de la imagen de origen que se va a utilizar como entrada.
 
filter:BitmapFilter — Objeto de filtro que se va a utilizar para calcular el rectángulo de destino.

Valor devuelto
Rectangle — Rectángulo de destino calculado empleando una imagen, el parámetro sourceRect y un filtro.

Emite
TypeError — sourceRect o el filtro tienen el valor null.

Ejemplo

En el ejemplo siguiente, se muestra cómo se puede utilizar el método generateFilterRect() para determinar el área rectangular que ocupará el resultado de un filtro de desenfoque. Los resultados del método generateFilterRect() están producidos por la función trace():

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Point;
import flash.geom.Rectangle;
import flash.filters.BlurFilter;

var bmd:BitmapData = new BitmapData(80, 30, false, 0xFFCC00);
var rect:Rectangle = new Rectangle(10, 10, 40, 10);
bmd.fillRect(rect, 0xFF0000);

var pt:Point = new Point(10, 10);
var filter:BlurFilter = new BlurFilter();

trace(bmd.generateFilterRect(rect, filter));
// (x=8, y=8, w=44, h=14)

bmd.applyFilter(bmd, rect, pt, filter);
var bm:Bitmap = new Bitmap(bmd);
addChild(bm);
Tenga en cuenta que el método generateFilterRect() no aplica el filtro. Llame al método applyFilter() para aplicarlo.
getColorBoundsRect()método 
public function getColorBoundsRect(mask:uint, color:uint, findColor:Boolean = true):Rectangle

Versión del lenguaje: ActionScript 3.0
Versión del reproductor: Flash Player 9

Determina una zona rectangular que encierra totalmente a todos los píxeles de un color determinado dentro de la imagen de mapa de bits (si el parámetro findColor se establece como true) o encierra totalmente a todos los píxeles que no incluyen el color especificado (si el parámetro findColor se ha establecido como false).

Por ejemplo, si tiene una imagen de origen y desea determinar el rectángulo de la imagen que contiene un canal alfa distinto de cero, pase {mask: 0xFF000000, color: 0x00000000} como parámetros. Si el parámetro findColor se define como true, se buscarán en toda la imagen los límites de píxeles para los que (value & mask) == color (donde value es el valor de color del píxel). Si el parámetro findColor se define como false, se buscarán en toda la imagen los límites de píxeles para los que (value & mask) != color (donde value es el valor de color del píxel). Para determinar el espacio blanco alrededor de una imagen, pase {mask: 0xFFFFFFFF, color: 0xFFFFFFFF} para buscar los límites de los píxeles no blancos.

Parámetros

mask:uint — Un valor hexadecimal que especifica los bits del color ARGB que deben tenerse en cuenta. El valor de color se combina con este valor hexadecimal empleando el operador & (AND en modo bit).
 
color:uint — Un valor hexadecimal que especifica el color ARGB con el que debe establecerse correspondencia (si findColor se establece en true) o con el que no debe establecerse correspondencia (si findColor se establece en false).
 
findColor:Boolean (default = true) — Si el valor se establece como true, devuelve los límites de un valor de color de una imagen. Si es false, devuelve los límites de donde no existe este color en la imagen.

Valor devuelto
Rectangle — La región de la imagen que es del color especificado.

Ejemplo

En el ejemplo siguiente, se crea un objeto BitmapData con la mitad superior de sus píxeles en rojo. A continuación, llama al método getColorBoundsRect() para determinar el rectángulo en el que los píxeles están en rojo (0xFF0000) y después, llama al mismo método para determinar el rectángulo en el que los píxeles no están en rojo (al establecer el parámetro findColor como false:

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Rectangle;

var bmd:BitmapData = new BitmapData(80, 40, false, 0xFFFFFF);
var rect:Rectangle = new Rectangle(0, 0, 80, 20);
bmd.fillRect(rect, 0xFF0000);

var maskColor:uint = 0xFFFFFF;
var color:uint = 0xFF0000;
var redBounds:Rectangle = bmd.getColorBoundsRect(maskColor, color, true);
trace(redBounds); // (x=0, y=0, w=80, h=20)

var notRedBounds:Rectangle = bmd.getColorBoundsRect(maskColor, color, false);
trace(notRedBounds); // (x=0, y=20, w=80, h=20)

var bm:Bitmap = new Bitmap(bmd);
addChild(bm);
getPixel()método 
public function getPixel(x:int, y:int):uint

Versión del lenguaje: ActionScript 3.0
Versión del reproductor: Flash Player 9

Devuelve un entero que representa un valor de píxel RGB de un objeto BitmapData en un punto específico (x, y). El método getPixel() devuelve un valor de píxel no multiplicado. No se devuelve información de alfa.

Todos los píxeles de un objeto BitmapData se almacenan como valores de color premultiplicados. El píxel de imagen premultiplicado ya tiene los valores de canal de color rojo, verde y azul multiplicados por los datos alfa. Por ejemplo, si el valor alfa es cero, los canales RGB también son cero, independientemente de sus valores no multiplicados. Esta pérdida de datos puede ocasionar algunos problemas cuando se realizan operaciones. Todos los métodos BitmapData toman y devuelven valores no multiplicados. La representación interna de píxeles se convierte de premultiplicada a no multiplicada antes de que se devuelva como valor. Durante una operación dada, el valor de píxel se premultiplica antes de establecer el píxel de imagen en bruto.

Parámetros

x:int — La posición x del píxel.
 
y:int — La posición y del píxel.

Valor devuelto
uint — Un número que representa un valor de píxel RGB. Si las coordenadas (x, y) se encuentran fuera de los límites de la imagen, el método devuelve 0.

Véase también


Ejemplo

En el ejemplo siguiente, se crea un objeto BitmapData relleno de rojo y se utiliza después el método getPixel() para determinar el valor de color en el píxel superior izquierdo:
import flash.display.BitmapData;

var bmd:BitmapData = new BitmapData(80, 40, false, 0xFF0000);

var pixelValue:uint = bmd.getPixel(1, 1);
trace(pixelValue.toString(16)); // ff0000;
getPixel32()método 
public function getPixel32(x:int, y:int):uint

Versión del lenguaje: ActionScript 3.0
Versión del reproductor: Flash Player 9

Devuelve un valor de color ARGB que contiene datos del canal alfa y datos de RGB. Este método es similar a getPixel(), que devuelve un color RGB sin datos del canal alfa.

Todos los píxeles de un objeto BitmapData se almacenan como valores de color premultiplicados. El píxel de imagen premultiplicado ya tiene los valores de canal de color rojo, verde y azul multiplicados por los datos alfa. Por ejemplo, si el valor alfa es cero, los canales RGB también son cero, independientemente de sus valores no multiplicados. Esta pérdida de datos puede ocasionar algunos problemas cuando se realizan operaciones. Todos los métodos BitmapData toman y devuelven valores no multiplicados. La representación interna de píxeles se convierte de premultiplicada a no multiplicada antes de que se devuelva como valor. Durante una operación dada, el valor de píxel se premultiplica antes de establecer el píxel de imagen en bruto.

Parámetros

x:int — La posición x del píxel.
 
y:int — La posición y del píxel.

Valor devuelto
uint — Un número que representa un valor de píxel ARGB. Si las coordenadas (x, y) se encuentran fuera de los límites de la imagen, se devuelve 0.

Véase también


Ejemplo

En el ejemplo siguiente se crea un objeto BitmapData relleno de un color, se utiliza después el método getPixel32() para determinar el valor de color en el píxel superior izquierdo y, a continuación, se determinan los valores hexadecimales para cada componente de color (alfa, rojo, verde y azul):

import flash.display.BitmapData;

var bmd:BitmapData = new BitmapData(80, 40, true, 0xFF44AACC);

var pixelValue:uint = bmd.getPixel32(1, 1);
var alphaValue:uint = pixelValue >> 24 & 0xFF;
var red:uint = pixelValue >> 16 & 0xFF;
var green:uint = pixelValue >> 8 & 0xFF;
var blue:uint = pixelValue & 0xFF;

trace(alphaValue.toString(16)); // ff
trace(red.toString(16)); // 44
trace(green.toString(16)); // aa
trace(blue.toString(16)); // cc
getPixels()método 
public function getPixels(rect:Rectangle):ByteArray

Versión del lenguaje: ActionScript 3.0
Versión del reproductor: Flash Player 9

Genera una matriz de bytes de una zona rectangular de datos de píxeles. Escribe un entero sin signo (un valor de píxeles de 32 bits no multiplicado) para cada píxel de la matriz de bytes.

Parámetros

rect:Rectangle — Un área rectangular del objeto BitmapData actual.

Valor devuelto
ByteArray — Una matriz ByteArray que representa los píxeles del objeto Rectangle en cuestión.

Emite
TypeError — rect tiene el valor null.

Véase también


Ejemplo

En el ejemplo siguiente, se crea un objeto BitmapData relleno de píxeles de ruido aleatorio y se utiliza después el método getPixels() para rellenar un objeto ByteArray de valores de píxel del objeto BitmapData.
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.utils.ByteArray;

var bmd:BitmapData = new BitmapData(80, 40, true);
var seed:int = int(Math.random() * int.MAX_VALUE);
bmd.noise(seed);

var bounds:Rectangle = new Rectangle(0, 0, bmd.width, bmd.height);
var pixels:ByteArray = bmd.getPixels(bounds);
hitTest()método 
public function hitTest(firstPoint:Point, firstAlphaThreshold:uint, secondObject:Object, secondBitmapDataPoint:Point = null, secondAlphaThreshold:uint = 1):Boolean

Versión del lenguaje: ActionScript 3.0
Versión del reproductor: Flash Player 9

Detecta la zona activa a nivel de píxeles entre una imagen de mapa de bits y un punto, un rectángulo u otra imagen de mapa de bits. Cuando se realiza la prueba de zona activa no se tiene en cuenta expansión, rotación ni ninguna otra transformación de ninguno de los objetos.

Si una imagen es opaca, se considerará un rectángulo totalmente opaco para este método. Las dos imágenes deben ser transparentes para realizar pruebas de zona activa a nivel de píxeles que tengan en cuenta la transparencia. Cuando se comprueban dos imágenes transparentes, los parámetros de umbral alfa controlan qué valores de canal, de 0 a 255, se consideran opacos.

Parámetros

firstPoint:Point — Posición de la esquina superior izquierda de la imagen BitmapData en un espacio de coordenadas arbitrarias. El mismo espacio de coordenadas se utiliza en la definición del parámetro secondBitmapPoint.
 
firstAlphaThreshold:uint — El valor de canal alfa más alto que se considera opaco para esta prueba.
 
secondObject:Object — Un objeto Rectangle, Point, Bitmap o BitmapData.
 
secondBitmapDataPoint:Point (default = null) — Un punto que define una ubicación de píxel en el segundo objeto BitmapData. Utilice este parámetro únicamente cuando el valor de secondObject sea un objeto BitmapData.
 
secondAlphaThreshold:uint (default = 1) — El valor de canal alfa más alto que se considera opaco en el segundo objeto BitmapData. Utilice este parámetro únicamente cuando el valor de secondObject sea un objeto BitmapData, y los dos objetos BitmapData sean transparentes.

Valor devuelto
Boolean — Devuelve el valor true si existe una zona activa; en caso contrario, devuelve false.

Emite
ArgumentError — El parámetro secondObject no es un objeto Point, Rectangle, Bitmap o BitmapData.
 
TypeError — firstPoint tiene el valor null.

Ejemplo

En el ejemplo siguiente, se crea un objeto BitmapData que sólo es opaco en una zona rectangular (20, 20, 40, 40) y se llama al método hitTest() con un objeto Point como secondObject. En la primera llamada, el objeto Point define la esquina superior izquierda del objeto BitmapData, que no es opaca, y en la segunda llamada, define el centro, que es opaco.
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.Point;

var bmd1:BitmapData = new BitmapData(80, 80, true, 0x00000000);
var rect:Rectangle = new Rectangle(20, 20, 40, 40);
bmd1.fillRect(rect, 0xFF0000FF);

var pt1:Point = new Point(1, 1);
trace(bmd1.hitTest(pt1, 0xFF, pt1)); // false
var pt2:Point = new Point(40, 40);
trace(bmd1.hitTest(pt1, 0xFF, pt2)); // true
lock()método 
public function lock():void

Versión del lenguaje: ActionScript 3.0
Versión del reproductor: Flash Player 9

Bloquea una imagen de manera que los objetos que hacen referencia al objeto BitmapData como, por ejemplo, los objetos Bitmap, no se actualicen cuando cambia este objeto BitmapData. Para mejorar el rendimiento, utilice este método junto con el método unlock() antes y después de realizar numerosas llamadas al método setPixel() o setPixel32().

Véase también


Ejemplo

En el ejemplo siguiente, se crea un objeto BitmapData basado en la propiedad bitmapData de un objeto Bitmap, picture. A continuación, llama al método lock() antes de llamar a una función personalizada complicada, complexTransformation(), que modifica el objeto BitmapData. (El objeto picture y la función complexTransformation() no se definen en este ejemplo.) Incluso si la función complexTransformation() actualiza la propiedad bitmapData del objeto picture, los cambios no se reflejan hasta que el código llama al método unlock() en el objeto bitmapData:
import flash.display.BitmapData;

var bitmapData:BitmapData = picture.bitmapData;
bitmapData.lock();
bitmapData = complexTransformation(bitmapData);
bitmapData.unlock();
picture.bitmapData = bitmapData;
merge()método 
public function merge(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, redMultiplier:uint, greenMultiplier:uint, blueMultiplier:uint, alphaMultiplier:uint):void

Versión del lenguaje: ActionScript 3.0
Versión del reproductor: Flash Player 9

Realiza una mezcla por canal de una imagen de origen a una imagen de destino. Por cada canal y cada píxel, se calcula un nuevo valor basado en los valores de canal de los píxeles de origen y de destino. Por ejemplo, en el canal rojo, el nuevo valor se calcula de la siguiente forma (donde redSrc es el valor del canal rojo para el píxel de la imagen de origen y redDest es el valor del canal rojo en el píxel correspondiente de la imagen de destino):

new redDest = [(redSrc * redMultiplier) + (redDest * (256 - redMultiplier))] / 256;

El evento redMultiplier, greenMultiplier, blueMultiplier y alphaMultiplier son los multiplicadores empleados para cada canal de color. Utilice un valor hexadecimal comprendido entre 0 y 0x100 (256) donde 0 especifica que se utiliza en el resultado el valor completo del destino, 0x100 especifica que se utiliza el valor completo del origen, y los números entre estos valores indican que se utiliza una mezcla (como 0x80 para el 50%).

Parámetros

sourceBitmapData:BitmapData — La imagen de mapa de bits de entrada que se va a utilizar. La imagen de origen puede ser otro objeto BitmapData o puede hacer referencia al objeto BitmapData actual.
 
sourceRect:Rectangle — Un rectángulo que define el área de la imagen de origen que se va a utilizar como entrada.
 
destPoint:Point — El punto de la imagen de destino (la instancia de BitmapData actual) que corresponde a la esquina superior izquierda del rectángulo de origen.
 
redMultiplier:uint — Valor uint hexadecimal por el que se multiplica el valor del canal rojo.
 
greenMultiplier:uint — Valor uint hexadecimal por el que se multiplica el valor del canal verde.
 
blueMultiplier:uint — Valor uint hexadecimal por el que se multiplica el valor del canal azul.
 
alphaMultiplier:uint — Valor uint hexadecimal por el que se multiplica el valor de transparencia alfa.


Emite
TypeError — sourceBitmapData, sourceRect o destPoint tienen el valor null.

Ejemplo

En el ejemplo siguiente, se crean dos objetos BitmapData. Ambos tienen un tamaño de 100 x 80 píxeles. El primero se rellena de verde y el segundo de rojo. El código llama al método merge(), fundiendo los píxeles del segundo objeto BitmapData con el primer objeto BitmapData, pero sólo en el área rectangular especificada:

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.Point;

var bmd1:BitmapData = new BitmapData(100, 80, true, 0xFF00FF00);
var bmd2:BitmapData = new BitmapData(100, 80, true, 0xFFFF0000);
var rect:Rectangle = new Rectangle(0, 0, 20, 20);
var pt:Point = new Point(20, 20);
var mult:uint = 0x80; // 50%
bmd1.merge(bmd2, rect, pt, mult, mult, mult, mult);

var bm1:Bitmap = new Bitmap(bmd1);
addChild(bm1);
var bm2:Bitmap = new Bitmap(bmd2);
addChild(bm2);
bm2.x = 110;
noise()método 
public function noise(randomSeed:int, low:uint = 0, high:uint = 255, channelOptions:uint = 7, grayScale:Boolean = false):void

Versión del lenguaje: ActionScript 3.0
Versión del reproductor: Flash Player 9

Rellena una imagen con píxeles que representan ruido aleatorio.

Parámetros

randomSeed:int — El número de inicialización aleatorio que se va a utilizar. Si mantiene iguales todos los demás parámetros, podrá generar resultados seudo-aleatorios variando el valor de inicialización aleatorio. La función de ruido es una función de asignación y no una verdadera función de generación de ruido aleatorio, por lo que producirá siempre los mismos resultados con el mismo valor de inicialización aleatorio.
 
low:uint (default = 0) — El valor más bajo que se va a generar para cada canal (de 0 a 255).
 
high:uint (default = 255) — El valor más alto que se va a generar para cada canal (de 0 a 255).
 
channelOptions:uint (default = 7) — Un número que puede ser una combinación de cualquiera de los cuatro valores de canal de color (BitmapDataChannel.RED, BitmapDataChannel.BLUE, BitmapDataChannel.GREEN y BitmapDataChannel.ALPHA). Puede utilizar el operador lógico OR (|) para combinar valores de canal.
 
grayScale:Boolean (default = false) — Valor booleano. Si es true, se creará una imagen en escala de grises estableciendo todos los canales de color con el mismo valor. La selección del canal alfa no se ve afectada por el establecimiento de este parámetro como true.

Véase también


Ejemplo

En el ejemplo siguiente, se crean dos objetos BitmapData y se llama al método noise() para ambos. Sin embargo, el parámetro grayscale se establece como false en la llamada al método noise() del primer objeto, y como true en la llamada al método noise() del segundo objeto:

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.BitmapDataChannel;

var bmd1:BitmapData = new BitmapData(80, 80);
var bmd2:BitmapData = new BitmapData(80, 80);

var seed:int = int(Math.random() * int.MAX_VALUE);
bmd1.noise(seed, 0, 0xFF, BitmapDataChannel.RED, false);
bmd2.noise(seed, 0, 0xFF, BitmapDataChannel.RED, true);

var bm1:Bitmap = new Bitmap(bmd1);
this.addChild(bm1);
var bm2:Bitmap = new Bitmap(bmd2);
this.addChild(bm2);
bm2.x = 90;
paletteMap()método 
public function paletteMap(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, redArray:Array = null, greenArray:Array = null, blueArray:Array = null, alphaArray:Array = null):void

Versión del lenguaje: ActionScript 3.0
Versión del reproductor: Flash Player 9

Reasigna los valores del canal de color en una imagen proporcionada a cuatro conjuntos de datos de la paleta de colores, una por cada canal.

Flash Player utiliza los siguientes pasos para generar la imagen resultante:

  1. Después de calcular los valores rojo, verde, azul y alfa, se suman utilizando aritmética estándar de enteros de 32 bits.
  2. Los valores del canal rojo, azul, verde y alfa de cada píxel se extraen en valores entre 0 y 255 independientes. A continuación se utilizan estos valores para consultar nuevos valores de color en la matriz adecuada: redArray, greenArray, blueArray y alphaArray. Cada una de estas cuatro matrices debe contener 256 valores.
  3. Después de recuperar los cuatro valores de canal nuevos, se combinan en un valor ARGB estándar que se aplica al píxel.

Este método admite efectos intercanal. Cada matriz de entrada puede contener valores completos de 32 bits, y no se produce desplazamiento cuando se suman los valores. Esta rutina no admite fijación de canales individuales.

Si no se especifica ninguna matriz para un canal, el canal de color se copia desde la imagen de origen hasta la de destino.

Puede emplear este método para diversos efectos, como asignación de paleta general (tomando un canal y convirtiéndolo en una imagen de color falso). También puede utilizarlo para una gran variedad de algoritmos de manipulación de color avanzados, como gamma, curvas, niveles y cuantificación.

Parámetros

sourceBitmapData:BitmapData — La imagen de mapa de bits de entrada que se va a utilizar. La imagen de origen puede ser otro objeto BitmapData o puede hacer referencia a la instancia BitmapData actual.
 
sourceRect:Rectangle — Un rectángulo que define el área de la imagen de origen que se va a utilizar como entrada.
 
destPoint:Point — El punto de la imagen de destino (el objeto BitmapData actual) que corresponde a la esquina superior izquierda del rectángulo de origen.
 
redArray:Array (default = null) — Si redArray no tiene el valor null, red = redArray[source red value] else red = source rect value.
 
greenArray:Array (default = null) — Si greenArray no tiene el valor null, green = greenArray[source green value] else green = source green value.
 
blueArray:Array (default = null) — Si blueArray no tiene el valor null, blue = blueArray[source blue value] else blue = source blue value.
 
alphaArray:Array (default = null) — Si alphaArray no tiene el valor null, alpha = alphaArray[source alpha value] else alpha = source alpha value.


Emite
TypeError — sourceBitmapData, sourceRect o destPoint tienen el valor null.

Ejemplo

En el ejemplo siguiente, se crea un objeto BitmapData verde con un cuadrado rojo en el centro y se utiliza el método paletteMap() para intercambiar el rojo por el verde en la mitad rectangular inferior del objeto BitmapData:

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.Point;

var myBitmapData:BitmapData = new BitmapData(80, 80, false, 0x00FF0000);
myBitmapData.fillRect(new Rectangle(20, 20, 40, 40), 0x0000FF00);

var redArray:Array = new Array(256);
var greenArray:Array = new Array(256);

for(var i:uint = 0; i < 255; i++) {
    redArray[i] = 0x00000000;
    greenArray[i] = 0x00000000;
}

redArray[0xFF] = 0x0000FF00;
greenArray[0xFF] = 0x00FF0000;

var bottomHalf:Rectangle = new Rectangle(0, 0, 100, 40);
var pt:Point = new Point(0, 0);
myBitmapData.paletteMap(myBitmapData, bottomHalf, pt, redArray, greenArray);

var bm1:Bitmap = new Bitmap(myBitmapData);
addChild(bm1);
perlinNoise()método 
public function perlinNoise(baseX:Number, baseY:Number, numOctaves:uint, randomSeed:int, stitch:Boolean, fractalNoise:Boolean, channelOptions:uint = 7, grayScale:Boolean = false, offsets:Array = null):void

Versión del reproductor: Flash Player 9

Genera una imagen de ruido Perlin.

El algoritmo de generación de ruido Perlin interpola y combina funciones individuales de ruido aleatorio (denominadas octavas) en una función única que genera ruido aleatorio de aspecto más natural. Como las octavas musicales, cada función de octava es dos veces la frecuencia de la anterior. El ruido Perlin se ha descrito como una "suma fractal de ruido", ya que combina múltiples conjuntos de datos de ruido con distintos niveles de detalle.

Las funciones de ruido Perlin pueden emplearse para simular fenómenos naturales y paisajes, como la fibra de la madera, nubes o montañas. En la mayoría de los casos, el resultado de esta función no se muestra directamente, sino que se utiliza para procesar otras imágenes y darles variaciones seudo-aleatorias.

Las funciones digitales sencillas de ruido aleatorio producen a menudo imágenes con puntos contrastados y discordantes. Este tipo de contraste no suele darse en la naturaleza. El algoritmo de ruido Perlin combina varias funciones de ruido que funcionan en distintos niveles de detalle. Este algoritmo produce menores variaciones entre los valores de píxel colindantes.

Nota: el algoritmo de ruido Perlin recibe su nombre de Ken Perlin, que lo desarrolló después de generar gráficos para la película Tron en 1982. En 1997, Perlin ganó un Oscar en la categoría de logros tecnológicos por la función de ruido que había desarrollado.

Parámetros

baseX:Number — La frecuencia que se va a utilizar en la dirección x. Por ejemplo, para generar un ruido con el tamaño ajustado para una imagen de 64 x 128, pase 64 como valor baseX.
 
baseY:Number — La frecuencia que se va a utilizar en la dirección y. Por ejemplo, para generar un ruido con el tamaño ajustado para una imagen de 64 x 128, pase 128 como valor baseY.
 
numOctaves:uint — Número de octavas o funciones de ruido individuales que se va a combinar para crear este ruido. Cuanto mayor sea el número de octavas más detalladas serán las imágenes. Asimismo, un número elevado de octavas requiere más tiempo de procesamiento.
 
randomSeed:int — El número de inicialización aleatorio que se va a utilizar. Si mantiene iguales todos los demás parámetros, podrá generar resultados seudo-aleatorios variando el valor de inicialización aleatorio. La función de ruido Perlin es una función de asignación y no una verdadera función de generación de ruido aleatorio, por lo que producirá siempre los mismos resultados con el mismo valor de inicialización aleatorio.
 
stitch:Boolean — Valor booleano. Si es true, intenta suavizar los bordes de transición de la imagen para crear texturas totalmente integradas para mosaico como relleno de mapa de bits.
 
fractalNoise:Boolean — Valor booleano. Si el valor es true, el método genera ruido fractal; en caso contrario, genera turbulencia. Una imagen con turbulencia presenta discontinuidades visibles en el degradado que pueden producir efectos visuales más nítidos, como llamas u olas del mar.
 
channelOptions:uint (default = 7) — Un número que puede ser una combinación de cualquiera de los cuatro valores de canal de color (BitmapDataChannel.RED, BitmapDataChannel.BLUE, BitmapDataChannel.GREEN y BitmapDataChannel.ALPHA). Puede utilizar el operador lógico OR (|) para combinar valores de canal.
 
grayScale:Boolean (default = false) — Valor booleano. Si es true, se creará una imagen en escala de grises utilizando valores idénticos para todos los canales de color rojo, verde y azul. El valor del canal alfa no se ve afectado si este valor se establece como true.
 
offsets:Array (default = null) — Una matriz de puntos que corresponde a desplazamientos x e y para cada octava. La manipulación de los valores de desplazamiento permite desplazarse con suavidad por una imagen con perlinNoise. Cada punto de la matriz de desplazamiento afecta a una función de ruido de octava específica.


Ejemplo

En el ejemplo siguiente, se crea un objeto BitmapData de 200 x 200 píxeles que llama al método perlinNoise() para generar un efecto de acuarela rojo y azul:

import flash.display.Bitmap;
import flash.display.BitmapData;

var bmd:BitmapData = new BitmapData(200, 200, false, 0x00CCCCCC);

var seed:Number = Math.floor(Math.random() * 10);
var channels:uint = BitmapDataChannel.RED | BitmapDataChannel.BLUE;
bmd.perlinNoise(100, 80, 6, seed, false, true, channels, false, null);

var bm:Bitmap = new Bitmap(bmd);
addChild(bm);
pixelDissolve()método 
public function pixelDissolve(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, randomSeed:int = 0, numPixels:int = 0, fillColor:uint = 0):int

Versión del lenguaje: ActionScript 3.0
Versión del reproductor: Flash Player 9

Realiza una disolución de píxeles de una imagen de origen a una imagen de destino o utilizando la misma imagen. Flash Player utiliza un valor randomSeed para generar una disolución de píxeles aleatoria. El valor devuelto por la función debe pasarse en llamadas posteriores para continuar la disolución de píxeles hasta terminar.

Si la imagen de origen no es igual a la de destino, los píxeles se copiarán desde el origen hasta el destino utilizando todas las propiedades. Este proceso permite disolver desde una imagen en blanco hasta una imagen completamente llena.

Si las imágenes de origen y destino son iguales, los píxeles se rellenan con el parámetro color. Este proceso permite disolver desde una imagen completamente llena. En este modo se ignora el parámetro point de destino.

Parámetros

sourceBitmapData:BitmapData — La imagen de mapa de bits de entrada que se va a utilizar. La imagen de origen puede ser otro objeto BitmapData o puede hacer referencia a la instancia BitmapData actual.
 
sourceRect:Rectangle — Un rectángulo que define el área de la imagen de origen que se va a utilizar como entrada.
 
destPoint:Point — El punto de la imagen de destino (la instancia de BitmapData actual) que corresponde a la esquina superior izquierda del rectángulo de origen.
 
randomSeed:int (default = 0) — El valor de inicialización aleatorio que se va a utilizar para comenzar la disolución de píxeles.
 
numPixels:int (default = 0) — El valor predeterminado es 1/30 del área de origen (ancho x alto).
 
fillColor:uint (default = 0) — Un valor de color ARGB que se utiliza para rellenar los píxeles con un valor de origen igual al de destino.

Valor devuelto
int — El nuevo valor de inicialización aleatorio que se va a utilizar para llamadas posteriores.

Emite
TypeError — sourceBitmapData, sourceRect o destPoint tienen el valor null.
 
TypeError — El valor de numPixels es negativo.

Ejemplo

En el ejemplo siguiente, se utiliza el método pixelDissolve() para convertir un objeto BitmapData gris a uno rojo disolviendo 40 píxeles a la vez hasta que todos los píxeles hayan cambiado de color:
import flash.display.BitmapData;
import flash.display.Bitmap;
import flash.geom.Point;
import flash.geom.Rectangle;
import flash.utils.Timer;
import flash.events.TimerEvent;

var bmd:BitmapData = new BitmapData(100, 80, false, 0x00CCCCCC);
var bitmap:Bitmap = new Bitmap(bmd);
addChild(bitmap);

var tim:Timer = new Timer(20);
tim.start();
tim.addEventListener(TimerEvent.TIMER, timerHandler);

function timerHandler(event:TimerEvent):void {
    var randomNum:Number = Math.floor(Math.random() * int.MAX_VALUE);
    dissolve(randomNum);
}

function dissolve(randomNum:Number):void {
    var rect:Rectangle = bmd.rect;
    var pt:Point = new Point(0, 0);
    var numberOfPixels:uint = 100;
    var red:uint = 0x00FF0000;
    bmd.pixelDissolve(bmd, rect, pt, randomNum, numberOfPixels, red);
    var grayRegion:Rectangle = bmd.getColorBoundsRect(0xFFFFFFFF, 0x00CCCCCC, true);
    if(grayRegion.width == 0 && grayRegion.height == 0 ) {
        tim.stop();
    }
}
scroll()método 
public function scroll(x:int, y:int):void

Versión del lenguaje: ActionScript 3.0
Versión del reproductor: Flash Player 9

Desplaza una imagen una determinada cantidad de píxeles (x, y). Las regiones del borde fuera del área de desplazamiento permanecen sin modificar.

Parámetros

x:int — La cantidad en la que se realiza desplazamiento horizontal.
 
y:int — La cantidad en la que se realiza desplazamiento vertical.


Ejemplo

En el ejemplo siguiente, se muestra el efecto de desplazamiento de un objeto de datos Bitmap 40 píxeles a la derecha:

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Rectangle;

var bmd:BitmapData = new BitmapData(80, 80, true, 0xFFCCCCCC);
var rect:Rectangle = new Rectangle(0, 0, 40, 40);
bmd.fillRect(rect, 0xFFFF0000);

var bm:Bitmap = new Bitmap(bmd);
addChild(bm);

trace(bmd.getPixel32(50, 20).toString(16)); // ffcccccccc

bmd.scroll(30, 0);

trace(bmd.getPixel32(50, 20).toString(16)); // ffff0000
setPixel()método 
public function setPixel(x:int, y:int, color:uint):void

Versión del lenguaje: ActionScript 3.0
Versión del reproductor: Flash Player 9

Establece un solo píxel de un objeto BitmapData. Durante esta operación se mantiene el valor del canal alfa actual del píxel de la imagen. El valor del parámetro de color RGB se trata como un valor de color no multiplicado.

Nota: para aumentar el rendimiento al utilizar el método setPixel() o setPixel32() repetidamente, llame al método lock() antes de llamar a setPixel() o setPixel32() y luego llame al método unlock() cuando haya realizado todos los cambios de píxeles. Este proceso evita que los objetos que hacen referencia a esta instancia de BitmapData se actualicen hasta que termine de realizar los cambios en los píxeles.

Parámetros

x:int — La posición x del píxel cuyo valor cambia.
 
y:int — La posición y del píxel cuyo valor cambia.
 
color:uint — El color RGB resultante para el píxel.

Véase también


Ejemplo

En el ejemplo siguiente, se utiliza el método setPixel() para dibujar una línea roja en un objeto BitmapData:

import flash.display.Bitmap;
import flash.display.BitmapData;

var bmd:BitmapData = new BitmapData(80, 80, false, 0xCCCCCC);

for (var i:uint = 0; i < 80; i++) {
    var red:uint = 0xFF0000;
    bmd.setPixel(i, 40, red);
}

var bm:Bitmap = new Bitmap(bmd);
addChild(bm);
setPixel32()método 
public function setPixel32(x:int, y:int, color:uint):void

Versión del lenguaje: ActionScript 3.0
Versión del reproductor: Flash Player 9

Establece los valores de color y transparencia alfa de un solo píxel de un objeto BitmapData. Este método es similar a setPixel(); la diferencia principal radica en que el método setPixel32() toma un valor de color ARGB que contiene información del canal alfa.

Todos los píxeles de un objeto BitmapData se almacenan como valores de color premultiplicados. El píxel de imagen premultiplicado ya tiene los valores de canal de color rojo, verde y azul multiplicados por los datos alfa. Por ejemplo, si el valor alfa es cero, los canales RGB también son cero, independientemente de sus valores no multiplicados. Esta pérdida de datos puede ocasionar algunos problemas cuando se realizan operaciones. Todos los métodos BitmapData toman y devuelven valores no multiplicados. La representación interna de píxeles se convierte de premultiplicada a no multiplicada antes de que se devuelva como valor. Durante una operación dada, el valor de píxel se premultiplica antes de establecer el píxel de imagen en bruto.

Nota: para aumentar el rendimiento al utilizar el método setPixel() o setPixel32() repetidamente, llame al método lock() antes de llamar a setPixel() o setPixel32() y luego llame al método unlock() cuando haya realizado todos los cambios de píxeles. Este proceso evita que los objetos que hacen referencia a esta instancia de BitmapData se actualicen hasta que termine de realizar los cambios en los píxeles.

Parámetros

x:int — La posición x del píxel cuyo valor cambia.
 
y:int — La posición y del píxel cuyo valor cambia.
 
color:uint — El color ARGB resultante para el píxel. Si el mapa de bits es opaco (no transparente), se ignora la parte de transparencia alfa de este valor de color.

Véase también


Ejemplo

En el ejemplo siguiente, se utiliza el método setPixel32() para dibujar una línea roja transparente (alfa == 0x60) en un objeto BitmapData:

import flash.display.Bitmap;
import flash.display.BitmapData;

var bmd:BitmapData = new BitmapData(80, 80, true, 0xFFCCCCCC);

for (var i:uint = 0; i < 80; i++) {
    var red:uint = 0x60FF0000;
    bmd.setPixel32(i, 40, red);
}

var bm:Bitmap = new Bitmap(bmd);
addChild(bm);
setPixels()método 
public function setPixels(rect:Rectangle, inputByteArray:ByteArray):void

Versión del lenguaje: ActionScript 3.0
Versión del reproductor: Flash Player 9

Convierte una matriz de bytes en una zona rectangular de datos de píxeles. Por cada píxel, se llama al método ByteArray.readUnsignedInt() y se escribe el valor devuelto en el píxel. Si la matriz de bytes termina antes de que se escriba en todo el rectángulo, la función devuelve un valor. Se espera que los datos de la matriz de bytes sean valores de píxeles ARGB de 32 bits. No se realiza ninguna búsqueda en la matriz de bytes ni antes ni después de que se lean los píxeles.

Parámetros

rect:Rectangle — Especifica la zona rectangular del objeto BitmapData.
 
inputByteArray:ByteArray — Objeto ByteArray que consta de valores de píxel no multiplicados de 32 bits que se va a utilizar en la zona rectangular.


Emite
EOFError — El objeto inputByteArray no incluye suficientes datos como para llenar el área del rectángulo rect. El método rellena la mayor cantidad posible de píxeles antes de emitir la excepción.
 
TypeError — rect o inputByteArray tienen el valor null.

Véase también


Ejemplo

En el ejemplo siguiente, se utilizan los métodos getPixels() y setPixels() para copiar píxeles de un objeto BitmapData a otro:

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.utils.ByteArray;
import flash.geom.Rectangle;

var bmd1:BitmapData = new BitmapData(100, 100, true, 0xFFCCCCCC);
var bmd2:BitmapData = new BitmapData(100, 100, true, 0xFFFF0000);

var rect:Rectangle = new Rectangle(0, 0, 100, 100);
var bytes:ByteArray = bmd1.getPixels(rect);

bytes.position = 0;
bmd2.setPixels(rect, bytes);

var bm1:Bitmap = new Bitmap(bmd1);
addChild(bm1);
var bm2:Bitmap = new Bitmap(bmd2);
addChild(bm2);
bm2.x = 110;
threshold()método 
public function threshold(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, operation:String, threshold:uint, color:uint = 0, mask:uint = 0xFFFFFFFF, copySource:Boolean = false):uint

Versión del lenguaje: ActionScript 3.0
Versión del reproductor: Flash Player 9

Prueba valores de píxel en una imagen con un umbral especificado y define los píxeles que se pasan para probar los valores del nuevo color. El método threshold() permite aislar y reemplazar rangos de color en una imagen y realizar otras operaciones lógicas en los píxeles de la imagen.

La lógica de prueba del método threshold() es la siguiente:

  1. Si ((pixelValue & mask) operation (threshold & mask)), se debería definir el píxel como color;
  2. En caso contrario, si copySource == true, se debe definir el píxel con el correspondiente valor de píxel de sourceBitmap.

El parámetro operation especifica el operador de comparación que se va a utilizar para la prueba de umbral. Por ejemplo, utilizando "==" como parámetro operation, puede aislar el valor de un color específico de una imagen. O bien, si utiliza {operation: "<", mask: 0xFF000000, threshold: 0x7F000000, color: 0x00000000}, puede definir todos los píxeles de destino como totalmente transparentes cuando el alfa del píxel de la imagen de origen sea menor que 0x7F. Puede utilizar esta técnica para transiciones animadas y otros efectos.

Parámetros

sourceBitmapData:BitmapData — La imagen de mapa de bits de entrada que se va a utilizar. La imagen de origen puede ser otro objeto BitmapData o puede hacer referencia a la instancia de BitmapData actual.
 
sourceRect:Rectangle — Un rectángulo que define el área de la imagen de origen que se va a utilizar como entrada.
 
destPoint:Point — El punto de la imagen de destino (la instancia de BitmapData actual) que corresponde a la esquina superior izquierda del rectángulo de origen.
 
operation:String — Uno de los siguientes operadores de comparación, pasados como una cadena: "<", "<=", ">", ">=", "==", "!="
 
threshold:uint — El valor con el que se prueba cada píxel para comprobar si está dentro o supera el umbral.
 
color:uint (default = 0) — El valor de color con el que se define un píxel si se supera la prueba de umbral. El valor predeterminado es 0x00000000.
 
mask:uint (default = 0xFFFFFFFF) — La máscara que se va a emplear para aislar un componente de color.
 
copySource:Boolean (default = false) — Si el valor es true, los valores de píxel de la imagen de origen se copian al destino cuando falla la prueba de umbral. Si es false, la imagen de origen no se copia cuando falla la prueba de umbral.

Valor devuelto
uint — El número de píxeles modificados.

Emite
TypeError — sourceBitmapData, sourceRect, destPoint o la operación tienen el valor null.
 
ArgumentError — La cadena de operación no es una operación válida.

Ejemplo

En el ejemplo siguiente, se utiliza el método perlinNoise() para agregar un patrón azul y rojo a un objeto BitmapData y se emplea después el método threshold() para copiar dichos píxeles desde el primer objeto BitmapData al segundo, reemplazando aquellos con el valor rojo mayor que 0x80 (50%) por un píxel establecido como rojo transparente (0x20FF0000):

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.BitmapDataChannel;
import flash.geom.Point;
import flash.geom.Rectangle;

var bmd1:BitmapData = new BitmapData(200, 200, true, 0xFFCCCCCC);

var seed:int = int(Math.random() * int.MAX_VALUE);
var channels:uint = BitmapDataChannel.RED | BitmapDataChannel.BLUE;
bmd1.perlinNoise(100, 80, 12, seed, false, true, channels, false, null);

var bitmap1:Bitmap = new Bitmap(bmd1);
addChild(bitmap1);

var bmd2:BitmapData = new BitmapData(200, 200, true, 0xFFCCCCCC);
var pt:Point = new Point(0, 0);
var rect:Rectangle = new Rectangle(0, 0, 200, 200);
var threshold:uint =  0x00800000;
var color:uint = 0x20FF0000;
var maskColor:uint = 0x00FF0000;
bmd2.threshold(bmd1, rect, pt, ">", threshold, color, maskColor, true);

var bitmap2:Bitmap = new Bitmap(bmd2);
bitmap2.x = bitmap1.x + bitmap1.width + 10;
addChild(bitmap2);
unlock()método 
public function unlock(changeRect:Rectangle = null):void

Versión del lenguaje: ActionScript 3.0
Versión del reproductor: Flash Player 9

Desbloquea una imagen de manera que los objetos que hacen referencia al objeto BitmapData como, por ejemplo, los objetos Bitmap, se actualicen cuando cambia este objeto BitmapData. Para mejorar el rendimiento, utilice este método junto con el método lock() antes y después de realizar numerosas llamadas al método setPixel() o setPixel32().

Parámetros

changeRect:Rectangle (default = null) — El área del objeto BitmapData que ha cambiado. Si no especifica ningún valor para este parámetro, se considerará que ha cambiado toda el área del objeto BitmapData.

Véase también


Ejemplo

En el ejemplo siguiente, se crea un objeto BitmapData basado en la propiedad bitmapData de un objeto Bitmap, picture. A continuación, llama al método lock() antes de llamar a una función personalizada complicada, complexTransformation(), que modifica el objeto BitmapData. (El objeto picture y la función complexTransformation() no se definen en este ejemplo.) Incluso si la función complexTransformation() actualiza la propiedad bitmapData del objeto picture, los cambios no se reflejan hasta que el código llama al método unlock() en el objeto bitmapData:
import flash.display.BitmapData;

var bitmapData:BitmapData = picture.bitmapData;
bitmapData.lock();
bitmapData = complexTransformation(bitmapData);
bitmapData.unlock();
picture.bitmapData = bitmapData;
Ejemplos Cómo utilizar los ejemplos
BitmapDataExample.as

En el ejemplo siguiente, se utiliza la clase BitmapDataExample para cargar la imagen Image.gif en el objeto DisplayObject en la ubicación predeterminada (0, 0). A continuación, se coloca una copia de Image.gif a la derecha del original, que tiene nuevos colores aplicados a los píxeles que pasan una prueba con el método threshold(). Esta tarea se consigue con los pasos siguientes:
  1. Se crea una propiedad url, que es la ubicación y el nombre del archivo de imagen.
  2. El constructor de la clase crea un objeto Loader, que a su vez crea la instancia de un detector de eventos que se distribuye cuando el método completeHandler() finaliza la manipulación de la imagen.
  3. El objeto URLRequest request se transfiere seguidamente a loader.load(), que carga la imagen en la memoria mediante un objeto de visualización.
  4. La imagen se incluye entonces en la lista de visualización, que muestra la imagen en la pantalla con las coordenadas x = 0, y = 0.
  5. El método completeHandler() realiza lo siguiente:
    • Crea un segundo objeto Loader, junto con Bitmap, que se inicializa con el objeto Loader.
    • Crea un segundo objeto Bitmap, duplicate, que a su vez llama al método duplicateImage(), que crea un duplicado de la imagen original.
    • Crea un objeto BitmapData que se asigna al objeto BitmapData del objeto duplicate.
    • Crea un nuevo objeto Rectangle inicializado con las mismas coordenadas, anchura y altura que la imagen original.
    • Crea un nuevo objeto Point, que se establece de forma predeterminada en x = 0, y = 0.
    • Crea las siguientes variables:
      • operation: aplica el nuevo color cuando el valor del umbral es mayor o igual que el original.
      • threshold: el valor con el que se compara cada píxel (en este ejemplo, gris claro con un alfa de 0xCC).
      • color: el color con el que se definen los píxeles que superan la prueba de umbral, que en este caso es amarillo sólido.
      • mask: el contrario exacto del color (azul transparente).
      • copySource: se establece como false, lo que indica que los valores de píxel no se copian si no se pasa el valor de umbral. Este valor no significa nada porque la imagen está duplicada y sólo se modifican los píxeles que superan la prueba de umbral.
    • Llama al método threshold() mediante las variables anteriores. La ecuación del umbral resultante es la siguiente: if (current pixel Value & 0x000000FF) >= (0xCCCCCCCC & 0x000000FF) then set pixel to 0xFFFFFF00.

Notas:


package {
    import flash.display.Bitmap;
    import flash.display.BitmapData;
    import flash.display.Loader;
    import flash.display.Sprite;
    import flash.events.*;
    import flash.geom.Point;
    import flash.geom.Rectangle;
    import flash.net.URLRequest;

    public class BitmapDataExample extends Sprite {
        private var url:String = "Image.gif";
        private var size:uint = 80;

        public function BitmapDataExample() {
            configureAssets();
        }

        private function configureAssets():void {
            var loader:Loader = new Loader();
            loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
            loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);

            var request:URLRequest = new URLRequest(url);
            loader.x = size * numChildren;
            loader.load(request);
            addChild(loader);
        }

        private function duplicateImage(original:Bitmap):Bitmap {
            var image:Bitmap = new Bitmap(original.bitmapData.clone());
            image.x = size * numChildren;
            addChild(image);
            return image;
        }

        private function completeHandler(event:Event):void {
            var loader:Loader = Loader(event.target.loader);
            var image:Bitmap = Bitmap(loader.content);

            var duplicate:Bitmap = duplicateImage(image);
            var bitmapData:BitmapData = duplicate.bitmapData;
            var sourceRect:Rectangle = new Rectangle(0, 0, bitmapData.width, bitmapData.height);
            var destPoint:Point = new Point();
            var operation:String = ">=";
            var threshold:uint = 0xCCCCCCCC;
            var color:uint = 0xFFFFFF00;
            var mask:uint = 0x000000FF;
            var copySource:Boolean = true;

            bitmapData.threshold(bitmapData,
                                 sourceRect,
                                 destPoint,
                                 operation,
                                 threshold,
                                 color,
                                 mask,
                                 copySource);
        }

        private function ioErrorHandler(event:IOErrorEvent):void {
            trace("Unable to load image: " + url);
        }
    }
}




 

Enviarme un mensaje de correo electrónico cuando se añadan comentarios a esta página | Informe de comentarios

Página actual: http://livedocs.adobe.com/flash/9.0_es/ActionScriptLangRefV3/flash/display/BitmapData.html