Actionscript 3.0: Mostrar imagen en blanco y negro con ColorMatrixFilter
La clase ColorMatrixFilter de Actionscript 3.0 permite aplicar una transformación a los valores de color y alfa de cada pixel de una imagen. Se puede aplicar sobre cualquier objeto que herede de la clase DisplayObject (es decir MovieClip, SimpleButton, TextField…).
Los filtros ColorMatrixFilter, se crean a partir de una matriz de transformación de 4×5, con lo valores de modificación que queremos aplicar a cada canal. Por ejemplo, si tenemos la matriz:
1 2 3 4 5 6 7 8 |
private var rLum:Number = 0.2225; private var gLum:Number = 0.7169; private var bLum:Number = 0.0606; private var bwMatrix:Array = [rLum, gLum, bLum, 0, 0, rLum, gLum, bLum, 0, 0, rLum, gLum, bLum, 0, 0, 0, 0, 0, 1, 0]; |
Podemos crear un filtro con ella, asi:
1 2 |
var filtroBW:ColorMatrixFilter filtroBW = new ColorMatrixFilter(bwMatrix); |
y aplicarlo a un MovieClip (que en este caso está en el escenario con el nombre Imagen2_mc):
1 |
Imagen2_mc.filters = [filtroBW] |
De esta manera, hacemos que el contenido de Imagen2_mc aparezca en blanco y negro, pero podemos modificar los valores de bwMatrix para obtener otros efectos.
El código completo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
package { import flash.display.MovieClip; import flash.filters.ColorMatrixFilter; public class BW extends MovieClip { private var rLum:Number = 0.2225; private var gLum:Number = 0.7169; private var bLum:Number = 0.0606; private var bwMatrix:Array = [rLum, gLum, bLum, 0, 0, rLum, gLum, bLum, 0, 0, rLum, gLum, bLum, 0, 0, 0, 0, 0, 1, 0]; private var filtroBW:ColorMatrixFilter public function BW():void { filtroBW = new ColorMatrixFilter(bwMatrix); Imagen2_mc.filters = [filtroBW] } } } |
Y los archivos fuente:
Descargar fuentes