Paqueteflash.filters
Clasepublic class ConvolutionFilter
HerenciaConvolutionFilter Inheritance BitmapFilter Inheritance Object

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

La clase ConvolutionFilter aplica un efecto de filtro de convolución de matrices. Una convolución combina píxeles en la imagen de entrada con píxeles colindantes para producir una imagen. Las convoluciones permiten conseguir una amplia variedad de efectos de imagen, como desenfoque, detección de bordes, aumento de la nitidez, relieve y biselado. 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.

Para crear un filtro de convolución, utilice la sintaxis new ConvolutionFilter(). El uso de filtros depende del objeto al que se aplique el filtro:

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

El 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 supera el límite de 2880 píxeles.

Ver los ejemplos

Véase también

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


Propiedades públicas
 PropiedadDefinido por
  alpha : Number
Valor de transparencia alfa del color opcional.
ConvolutionFilter
  bias : Number
Cantidad de sesgo que debe añadirse al resultado de la transformación de matriz.
ConvolutionFilter
  clamp : Boolean
Indica si la imagen debe fijarse.
ConvolutionFilter
  color : uint
Color hexadecimal para reemplazar los píxeles que quedan fuera de la imagen de origen.
ConvolutionFilter
 Inheritedconstructor : Object
Una referencia a la clase de objeto o función constructora para una instancia de objeto determinada.
Object
  divisor : Number
Divisor que se utiliza durante la transformación de matriz.
ConvolutionFilter
  matrix : Array
Conjunto de valores que se utiliza para la transformación de matriz.
ConvolutionFilter
  matrixX : Number
La dimensión x de la matriz (el número de columnas de la matriz).
ConvolutionFilter
  matrixY : Number
La dimensión y de la matriz (el número de filas de la matriz).
ConvolutionFilter
  preserveAlpha : Boolean
Indica si el canal alfa se conserva sin el efecto de filtro o si se aplica el filtro de convolución al canal alfa, así como a los canales de color.
ConvolutionFilter
 Inheritedprototype : Object
[static] Una referencia al objeto prototipo de una clase u objeto de función.
Object
Métodos públicos
 MétodoDefinido por
  
ConvolutionFilter(matrixX:Number = 0, matrixY:Number = 0, matrix:Array = null, divisor:Number = 1.0, bias:Number = 0.0, preserveAlpha:Boolean = true, clamp:Boolean = true, color:uint = 0, alpha:Number = 0.0)
Inicializa una instancia ConvolutionFilter con los parámetros especificados.
ConvolutionFilter
  
Devuelve una copia de este objeto de filtro.
ConvolutionFilter
 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
alphapropiedad
alpha:Number  [read-write]

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

Valor de transparencia alfa del color opcional. Los valores válidos van de 0 a 1,0. El valor por defecto es 0. Por ejemplo, 0,25 establece un valor de transparencia del 25%.


Implementación
    public function get alpha():Number
    public function set alpha(value:Number):void
biaspropiedad 
bias:Number  [read-write]

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

Cantidad de sesgo que debe añadirse al resultado de la transformación de matriz. El sesgo aumenta el valor de color de cada canal para que los colores oscuros parezcan más claros. El valor predeterminado es 0.


Implementación
    public function get bias():Number
    public function set bias(value:Number):void
clamppropiedad 
clamp:Boolean  [read-write]

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

Indica si la imagen debe fijarse. Para los píxeles que quedan fuera de la imagen de origen, un valor true indica que la imagen de entrada se amplía a lo largo de cada uno de sus bordes cuanto sea necesario duplicando los valores de color en cada borde de la imagen de entrada. false indica que se utilizará otro color, según se haya especificado en las propiedades color y alpha. El valor predeterminado es true.


Implementación
    public function get clamp():Boolean
    public function set clamp(value:Boolean):void

Ejemplo

En el ejemplo siguiente, se crean dos cuadros utilizando la clase BitmapData; el tamaño de uno de ellos es la mitad del otro. Cuando el ejemplo se carga por primera vez, el cuadro más grande se dibuja dentro de mc utilizando attachBitmap(). Cuando se hace clic en mc y se llama al método applyFilter(), la instancia largeBox de BitmapData se vuelve a dibujar con smallBox como mapa de bits de origen. Como applyFilter() dibuja un objeto smallBox en un elemento Rectangle cuya anchura y altura vienen especificadas como las del objeto largeBox, el mapa de bits de origen es más pequeño que el área de dibujo. La propiedad clamp de ConvolutionFilter en este caso se define como false y el área que no queda cubierta por el mapa de bits de origen, smallBox, es de color rojo, tal como se determina en las variables clampColor y clampAlpha.
 package {
    import flash.display.Sprite;
    import flash.display.BitmapData;
    import flash.filters.ConvolutionFilter;
    import flash.text.TextField;
    import flash.geom.Rectangle;
    import flash.geom.Point;

    public class ConvolutionClampExample extends Sprite {
        // Variables that affect clamping:
        var clamp:Boolean = false;
        var clampColor:Number = 0xFF0000;
        var clampAlpha:Number = 1;

        // For illustration, keep other ConvolutionFilter variables neutral:
        var bias:Number = 0;
        var preserveAlpha:Boolean = false;
        // Also, construct a neutral matrix
        var matrixCols:Number = 3;
        var matrixRows:Number = 3;
        var matrix:Array = [ 1,1,1,
                             1,1,1,
                             1,1,1 ];

        var filter:ConvolutionFilter = new ConvolutionFilter(matrixCols, matrixRows, matrix, matrix.length, bias, preserveAlpha, clamp, clampColor, clampAlpha);

        var largeBoxWidth:Number = 100;
        var largeBoxHeight:Number = 100;
        var largeBox:BitmapData = new BitmapData(largeBoxWidth, largeBoxWidth, true, 0xCC00FF00);
        var smallBoxWidth:Number = largeBoxWidth / 2;
        var smallBoxHeight:Number = largeBoxHeight / 2;
        var smallBox:BitmapData = new BitmapData(smallBoxWidth, smallBoxWidth, true, 0xCC0000FF);

        var mc:MovieClip = this.createEmptyMovieClip("mc", this.getNextHighestDepth());
        mc.attachBitmap(largeBox, this.getNextHighestDepth());

        mc.onPress = function() {
            largeBox.applyFilter(smallBox,
                                 new Rectangle(0,0, largeBoxWidth, largeBoxHeight),
                                 new Point(0,0),
                                 filter);
        }
    }
}
colorpropiedad 
color:uint  [read-write]

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

Color hexadecimal para reemplazar los píxeles que quedan fuera de la imagen de origen. Es un valor RGB sin componente alfa. El valor por defecto es 0.


Implementación
    public function get color():uint
    public function set color(value:uint):void
divisorpropiedad 
divisor:Number  [read-write]

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

Divisor que se utiliza durante la transformación de matriz. El valor predeterminado es 1. Un divisor que es la suma de todos los valores de matriz suaviza la intensidad de color general del resultado. Se ignora un valor de 0 y en su lugar se utiliza el valor predeterminado.


Implementación
    public function get divisor():Number
    public function set divisor(value:Number):void
matrixpropiedad 
matrix:Array  [read-write]

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

Conjunto de valores que se utiliza para la transformación de matriz. El número de elementos de la matriz debe ser igual a matrixX * matrixY.

Una convolución de matriz se basa en una matriz n x m, que describe cómo el valor de un píxel determinado en la imagen de entrada se combina con los valores de los píxeles colindantes para producir un valor de píxel resultante. Cada píxel resultante se determina aplicando la matriz al píxel de origen correspondiente y a los píxeles colindantes.

Para una convolución de matriz 3 x 3 se emplea la fórmula siguiente para cada canal de color independiente:


 dst (x, y) = ((src (x-1, y-1) * a0 + src(x, y-1) * a1....
                   src(x, y+1) * a7 + src (x+1,y+1) * a8) / divisor) + bias
 

Algunas especificaciones de filtro se ejecutan más rápidamente cuando se utiliza un procesador con SSE (Streaming SIMD Extensions). A continuación, se indican criterios para conseguir operaciones de convolución más rápidas:

Nota: si se crea una instancia de ConvolutionFilter utilizando el constructor sin parámetros, el orden en que se asignan los valores a las propiedades de la matriz afecta al comportamiento del filtro. En el siguiente caso, la matriz se asigna mientras que las propiedades matrixX y matrixY siguen definidas en 0 (valor predeterminado):

    public var myfilter:ConvolutionFilter = new ConvolutionFilter();
    myfilter.matrix = [0, 0, 0, 0, 1, 0, 0, 0, 0];
    myfilter.matrixX = 3;
    myfilter.matrixY = 3;
    

En el siguiente caso, la matriz se asigna mientras que las propiedades matrixX y matrixY están definidas en 3:

    public var myfilter:ConvolutionFilter = new ConvolutionFilter();
    myfilter.matrixX = 3;
    myfilter.matrixY = 3;
    myfilter.matrix = [0, 0, 0, 0, 1, 0, 0, 0, 0];
    


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

Emite
TypeError — La matriz es null cuando se define
matrixXpropiedad 
matrixX:Number  [read-write]

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

La dimensión x de la matriz (el número de columnas de la matriz). El valor predeterminado es 0.


Implementación
    public function get matrixX():Number
    public function set matrixX(value:Number):void
matrixYpropiedad 
matrixY:Number  [read-write]

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

La dimensión y de la matriz (el número de filas de la matriz). El valor predeterminado es 0.


Implementación
    public function get matrixY():Number
    public function set matrixY(value:Number):void
preserveAlphapropiedad 
preserveAlpha:Boolean  [read-write]

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

Indica si el canal alfa se conserva sin el efecto de filtro o si se aplica el filtro de convolución al canal alfa, así como a los canales de color. Un valor false indica que la convolución se aplica a todos los canales, incluido el canal alfa. true indica que la convolución sólo se aplica a los canales de color. El valor predeterminado es true.


Implementación
    public function get preserveAlpha():Boolean
    public function set preserveAlpha(value:Boolean):void
Información sobre constructores
ConvolutionFilter()constructor
public function ConvolutionFilter(matrixX:Number = 0, matrixY:Number = 0, matrix:Array = null, divisor:Number = 1.0, bias:Number = 0.0, preserveAlpha:Boolean = true, clamp:Boolean = true, color:uint = 0, alpha:Number = 0.0)

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

Inicializa una instancia ConvolutionFilter con los parámetros especificados.

Parámetros
matrixX:Number (default = 0) — La dimensión x de la matriz (el número de columnas de la matriz). El valor predeterminado es 0.
 
matrixY:Number (default = 0) — La dimensión y de la matriz (el número de filas de la matriz). El valor predeterminado es 0.
 
matrix:Array (default = null) — Matriz de valores utilizados para la transformación de matrices. El número de elementos de la matriz debe ser igual a matrixX * matrixY.
 
divisor:Number (default = 1.0) — Divisor que se utiliza durante la transformación de matriz. El valor predeterminado es 1. Un divisor que es la suma de todos los valores de matriz compensa la intensidad de color general del resultado. Se ignora un valor de 0 y en su lugar se utiliza el valor predeterminado.
 
bias:Number (default = 0.0) — Sesgo que debe añadirse al resultado de la transformación de matriz. El valor predeterminado es 0.
 
preserveAlpha:Boolean (default = true) — Un valor false indica que el valor alfa no se conserva y que la convolución se aplica a todos los canales, incluido el canal alfa. true indica que la convolución sólo se aplica a los canales de color. El valor predeterminado es true.
 
clamp:Boolean (default = true) — Para los píxeles que quedan fuera de la imagen de origen, un valor true indica que la imagen de entrada se amplía a lo largo de cada uno de sus bordes cuanto sea necesario duplicando los valores de color en cada borde de la imagen de entrada. false indica que se utilizará otro color, según se haya especificado en las propiedades color y alpha. El valor predeterminado es true.
 
color:uint (default = 0) — Color hexadecimal para reemplazar los píxeles que quedan fuera de la imagen de origen.
 
alpha:Number (default = 0.0) — Alfa del color opcional.
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 nueva instancia ConvolutionFilter con las mismas propiedades que la instancia ConvolutionMatrixFilter original.
Ejemplos Cómo utilizar los ejemplos
ConvolutionFilterExample.as

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

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 applyBrightness(), applySharpness() y applyOutline() 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.*;
    import flash.filters.BitmapFilter;
    import flash.filters.ConvolutionFilter;
    import flash.net.URLRequest;
    import flash.text.TextField;
    import flash.text.TextFieldAutoSize;

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

        public function ConvolutionFilterExample() {
            buildChild(applyNothing);
            buildChild(applyBrightness);
            buildChild(applySharpness);
            buildChild(applyOutline);
        }

        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 applyNothing(event:Event):void {
            var child:DisplayObject = DisplayObject(event.target.loader);
            applyLabel(child, "no filter");
        }

        private function applyBrightness(event:Event):void {
            var child:DisplayObject = DisplayObject(event.target.loader);
            var matrix:Array = [5, 5, 5,
                                5, 0, 5,
                                5, 5, 5];
            applyFilter(child, matrix);
            applyLabel(child, "brightness");
        }

        private function applySharpness(event:Event):void {
            var child:DisplayObject = DisplayObject(event.target.loader);
            var matrix:Array = [0, -1, 0,
                               -1, 20, -1,
                                0, -1, 0];
            applyFilter(child, matrix);
            applyLabel(child, "sharpness");
        }

        private function applyOutline(event:Event):void {
            var child:DisplayObject = DisplayObject(event.target.loader);
            var matrix:Array = [-30, 30, 0,
                                -30, 30, 0,
                                -30, 30, 0];
            applyFilter(child, matrix);
            applyLabel(child, "outline");
        }

        private function applyFilter(child:DisplayObject, matrix:Array):void {
            var matrixX:Number = 3;
            var matrixY:Number = 3;
            var divisor:Number = 9;
            var filter:BitmapFilter = new ConvolutionFilter(matrixX, matrixY, matrix, divisor);
            var filters:Array = new Array();
            filters.push(filter);
            child.filters = filters;
        }

        private function applyLabel(child:DisplayObject, label:String):void {
            var tf:TextField = new TextField();
            tf.x = child.x;
            tf.y = child.height;
            tf.autoSize = TextFieldAutoSize.LEFT;
            tf.text = label;
            addChild(tf);
        }

        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/ConvolutionFilter.html