Paqueteflash.filters
Clasepublic final class ColorMatrixFilter
HerenciaColorMatrixFilter Inheritance BitmapFilter Inheritance Object

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

La clase ColorMatrixFilter permite aplicar una transformación de matriz 4 x 5 en los valores de color RGBA y alfa de cada píxel de la imagen de entrada para producir un resultados con un nuevo conjunto de valores de color RGBA y alfa. Permite cambios de saturación, rotación de matiz, luminancia a alfa y otros efectos diversos. Puede aplicar el filtro a cualquier objeto de visualización (es decir, objetos que hereden de la clase DisplayObject), como objetos MovieClip, SimpleButton, TextField y Video, y también objetos BitmapData.

Nota: en el caso de valores RGBA, el byte más significativo representa el valor del canal rojo, seguido del verde, el azul y, por último, el alfa.

Para crear un nuevo filtro de matriz de colores, utilice la sintaxis new ColorMatrixFilter(). El uso de filtros depende del objeto al que se aplique el filtro:

Si aplica un filtro a un objeto de visualización, la propiedad cacheAsBitmap del objeto de visualización se establece en true. Si quita todos los filtros, se restaurará el valor original de cacheAsBitmap.

Un filtro no se aplica si la imagen resultante supera los 2880 píxeles de anchura o altura. Por ejemplo, si amplía un clip de película grande al que se le ha aplicado un filtro, éste se desactiva si la imagen resultante alcanza el límite de 2880 píxeles.

Ver los ejemplos

Véase también

flash.display.BitmapData.getPixel()
flash.display.BitmapData.applyFilter()
flash.display.DisplayObject.filters
flash.display.DisplayObject.cacheAsBitmap


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
  matrix : Array
Conjunto de 20 elementos para la transformación de color 4x5.
ColorMatrixFilter
 Inheritedprototype : Object
[static] Una referencia al objeto prototipo de una clase u objeto de función.
Object
Métodos públicos
 MétodoDefinido por
  
ColorMatrixFilter(matrix:Array = null)
Inicializa una instancia ColorMatrixFilter nueva con los parámetros especificados.
ColorMatrixFilter
  
Devuelve una copia de este objeto de filtro.
ColorMatrixFilter
 Inherited
Indica si un objeto tiene definida una propiedad especificada.
Object
 Inherited
Indica si hay una instancia de la clase Object en la cadena de prototipo del objeto especificado como parámetro.
Object
 Inherited
Indica si existe la propiedad especificada y si es enumerable.
Object
 Inherited
Establece la disponibilidad de una propiedad dinámica para operaciones de bucle.
Object
 Inherited
Devuelve la representación de cadena del objeto especificado.
Object
 Inherited
Devuelve el valor simple del objeto especificado.
Object
Información sobre propiedades
matrixpropiedad
matrix:Array  [read-write]

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

Conjunto de 20 elementos para la transformación de color 4x5. No se puede modificar directamente el valor de la propiedad matrix (por ejemplo, myFilter.matrix[2] = 1;). En su lugar, debe obtener una referencia a la matriz, realizar el cambio en la referencia y restaurar el valor.

Este filtro de la matriz de colores separa cada píxel de origen en sus componentes rojo, verde, azul y alfa como srcR, srcG, srcB, srcA. Para calcular el resultado de cada uno de los cuatro canales, el valor de cada píxel de la imagen se multiplica por los valores de la matriz de transformación. Opcionalmente, se puede añadir un desplazamiento que oscile entre -255 y 255 para cada resultado (el quinto elemento de cada fila de la matriz). El filtro combina cada componente de color en un único píxel y escribe el resultado. En la siguiente fórmula, el intervalo desde a[0] hasta a[19] corresponde a las entradas 0-19 en la matriz de 20 elementos que se transmite a la propiedad matrix:

 redResult   = (a[0]  * srcR) + (a[1]  * srcG) + (a[2]  * srcB) + (a[3]  * srcA) + a[4]
 greenResult = (a[5]  * srcR) + (a[6]  * srcG) + (a[7]  * srcB) + (a[8]  * srcA) + a[9]
 blueResult  = (a[10] * srcR) + (a[11] * srcG) + (a[12] * srcB) + (a[13] * srcA) + a[14]
 alphaResult = (a[15] * srcR) + (a[16] * srcG) + (a[17] * srcB) + (a[18] * srcA) + a[19]
 

Para cada valor de color de la matriz, un valor de 1 equivale al 100% del canal que se envía al resultado, conservando el valor del canal de color.

Los cálculos se realizan con valores de color no multiplicados. Si el gráfico de entrada se compone de valores de color premultiplicados, esos valores se convertirán automáticamente en valores de color no multiplicados para esta operación.

Hay dos modos optimizados disponibles:

Sólo alfa. Cuando pasa al filtro una matriz que ajusta solamente el componente alfa, tal y como aquí se indica, el filtro optimiza su rendimiento:

     1 0 0 0 0
     0 1 0 0 0
     0 0 1 0 0
     0 0 0 N 0  (donde N se encuentra entre 0,0 y 1,0)
 

Versión rápida. Disponible sólo con procesadores que disponen de acelerador SSE/AltiVec, como Intel® Pentium 3 y posteriores, Apple® G4 y posteriores. El acelerador se utiliza cuando los términos del multiplicador corresponden al rango comprendido entre -15.99 y 15.99, y los términos del sumador a[4], a[9], a[14] y a[19] corresponden al rango entre -8000 y8000.


Implementación
    public function get matrix():Array
    public function set matrix(value:Array):void

Emite
TypeError — La matriz es null cuando se define
Información sobre constructores
ColorMatrixFilter()constructor
public function ColorMatrixFilter(matrix:Array = null)

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

Inicializa una instancia ColorMatrixFilter nueva con los parámetros especificados.

Parámetros
matrix:Array (default = null) — Una matriz de 20 elementos organizados en una matriz de 4x5.
Información sobre métodos
clone()método
public override function clone():BitmapFilter

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

Devuelve una copia de este objeto de filtro.

Valor devuelto
BitmapFilter — Una instancia ColorMatrixFilter nueva con las mismas propiedades que la original.
Ejemplos Cómo utilizar los ejemplos
ColorMatrixFilterExample.as

En el ejemplo siguiente, se aplican distintos filtros de matriz de colores a un archivo de imagen. El constructor del filtro llama a buildChild() cuatro veces para cargar y mostrar cuatro instancias de la imagen. La primera llamada a buildChild() toma null como argumento y no aplica ningún filtro a la primera instancia. Todas las llamadas sucesivas a buildChild() toman como argumento una función que se aplica a distintos filtros de matriz de colores en cada instancia sucesiva de la imagen.

La función buildChild() crea un nuevo objeto Loader denominado loader. Para cada llamada a buildChild(), se asocia un detector de eventos al objeto Loader para detectar eventos complete que se controlan con la función transferida a buildChild().

Las funciones applyRed(), applyGreen() y applyBlue() utilizan distintos valores para la matriz matrix para conseguir distintos efectos de ConvolutionFilter.

Nota: para obtener los mejores resultados, utilice una imagen de aproximadamente 80 píxeles de anchura. El nombre y la ubicación del archivo de imagen deben coincidir con el valor transferido a la propiedad url. Por ejemplo, el valor transferido a url en el ejemplo señala a un archivo de imagen llamado "Image.jpg" que se encuentra en el mismo directorio que el archivo SWF.


package {
    import flash.display.DisplayObject;
    import flash.display.Loader;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.IOErrorEvent;
    import flash.filters.ColorMatrixFilter;
    import flash.net.URLRequest;

    public class ColorMatrixFilterExample extends Sprite {
        private var size:uint  = 140;
        private var url:String = "Image.jpg";

        public function ColorMatrixFilterExample() {
            buildChild(null);
            buildChild(applyRed);
            buildChild(applyGreen);
            buildChild(applyBlue);
        }

        private function buildChild(loadHandler:Function):void {
            var loader:Loader = new Loader();
            loader.x = numChildren * size;
            loader.y = size;
            loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
            if (loadHandler != null) {
                loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadHandler);
            }

            var request:URLRequest = new URLRequest(url);
            loader.load(request);
            addChild(loader);
        }

        private function applyRed(event:Event):void {
            var child:DisplayObject = DisplayObject(event.target.loader);
            var matrix:Array = new Array();
            matrix = matrix.concat([1, 0, 0, 0, 0]); // red
            matrix = matrix.concat([0, 0, 0, 0, 0]); // green
            matrix = matrix.concat([0, 0, 0, 0, 0]); // blue
            matrix = matrix.concat([0, 0, 0, 1, 0]); // alpha

            applyFilter(child, matrix);
        }

        private function applyGreen(event:Event):void {
            var child:DisplayObject = DisplayObject(event.target.loader);
            var matrix:Array = new Array();
            matrix = matrix.concat([0, 0, 0, 0, 0]); // red
            matrix = matrix.concat([0, 1, 0, 0, 0]); // green
            matrix = matrix.concat([0, 0, 0, 0, 0]); // blue
            matrix = matrix.concat([0, 0, 0, 1, 0]); // alpha

            applyFilter(child, matrix);
        }

        private function applyBlue(event:Event):void {
            var child:DisplayObject = DisplayObject(event.target.loader);
            var matrix:Array = new Array();
            matrix = matrix.concat([0, 0, 0, 0, 0]); // red
            matrix = matrix.concat([0, 0, 0, 0, 0]); // green
            matrix = matrix.concat([0, 0, 1, 0, 0]); // blue
            matrix = matrix.concat([0, 0, 0, 1, 0]); // alpha

            applyFilter(child, matrix);
        }

        private function applyFilter(child:DisplayObject, matrix:Array):void {
            var filter:ColorMatrixFilter = new ColorMatrixFilter(matrix);
            var filters:Array = new Array();
            filters.push(filter);
            child.filters = filters;
        }

        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/filters/ColorMatrixFilter.html