Paquete | flash.filters |
Clase | public final class ColorMatrixFilter |
Herencia | ColorMatrixFilter BitmapFilter Object |
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0, Flash Player 9 |
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:
- Para aplicar filtros a clips de película, campos de texto, botones y vídeo, utilice la propiedad
filters
(heredada de DisplayObject). La propiedadfilters
de un objeto no lo modifica y se puede quitar el filtro borrando la propiedadfilters
. - Para aplicar filtros a objetos BitmapData, utilice el método
BitmapData.applyFilter()
. Cuando se llama aapplyFilter()
en un objeto BitmapData, se genera una imagen filtrada al procesar el objeto BitmapData de origen y el objeto de 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
.
No se aplica ningún filtro si la imagen resultante excede las dimensiones máximas. En AIR 1.5 y en Flash Player 10, la anchura o altura máxima en píxeles es de 8,191, y el número total de píxeles no puede superar los 16,777,215. (De este modo, si una imagen tiene 8,191 píxeles de anchura, sólo podrá tener 2.048 píxeles de altura.) En Flash Player 9 y versiones anteriores y en AIR 1.1 y versiones anteriores, el límite es 2.880 píxeles de alto y 2.880 píxeles de ancho. 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 las dimensiones máximas.
Elementos de API relacionados
flash.display.BitmapData.applyFilter()
flash.display.DisplayObject.filters
flash.display.DisplayObject.cacheAsBitmap
Propiedad | Definido por | ||
---|---|---|---|
constructor : 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 |
Método | Definido por | ||
---|---|---|---|
ColorMatrixFilter(matrix:Array = null)
Inicializa una instancia ColorMatrixFilter nueva con los parámetros especificados. | ColorMatrixFilter | ||
[override]
Devuelve una copia de este objeto de filtro. | ColorMatrixFilter | ||
Indica si un objeto tiene definida una propiedad especificada. | Object | ||
Indica si hay una instancia de la clase Object en la cadena de prototipo del objeto especificado como parámetro. | Object | ||
Indica si existe la propiedad especificada y si es enumerable. | Object | ||
Establece la disponibilidad de una propiedad dinámica para operaciones de bucle. | Object | ||
Devuelve la representación de cadena de este objeto, con formato según las convenciones específicas de configuración regional. | Object | ||
Devuelve la representación de cadena del objeto especificado. | Object | ||
Devuelve el valor simple del objeto especificado. | Object |
matrix | propiedad |
matrix:Array
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0, 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 al conjunto, 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 el conjunto 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 del conjunto, 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 (where N is between 0.0 and 1.0)
Versión rápida. Disponible sólo con procesadores que disponen de acelerador SSE/AltiVec, como Intel ® Pentium ® 3 y posteriores y 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 — El conjunto es null cuando se define
|
ColorMatrixFilter | () | Información sobre |
public function ColorMatrixFilter(matrix:Array = null)
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0, Flash Player 9 |
Inicializa una instancia ColorMatrixFilter nueva con los parámetros especificados.
Parámetrosmatrix:Array (default = null ) — Un conjunto de 20 elementos organizados en un conjunto de 4x5.
|
clone | () | método |
override public function clone():BitmapFilter
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0, Flash Player 9 |
Devuelve una copia de este objeto de filtro.
Valor devueltoBitmapFilter — Una instancia ColorMatrixFilter nueva con las mismas propiedades que la original.
|
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 el conjunto 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); } } }
Tue Jun 12 2018, 02:12 PM Z