A continuación vamos a presentar 2 funciones basadas en la clase BitmapData: una que servirá para conseguir un efecto espejo, y otra que nos permitirá pasar una imagen a escala de grises. Para entender bien su funcionamiento, te recomendamos que leas el siguiente artículo:
Introducing the Image API in Flash 8, escrito por Guy Watson.
Efecto Espejo:
Resultado:
Código utilizado:
import flash.geom.*;
import flash.display.*;
function espejo(mc){
w=mc._width; h=mc._height;
b = new BitmapData(w, 2*h, true, 0);
t = createEmptyMovieClip("p2",100002);
M = new Matrix(); M.scale(1,-1); M.ty = 2*h;
Mx = new Matrix(); Mx.createGradientBox(w,h,1.57,0,0);
t.beginGradientFill("linear",[0,0,0],[100,80,10],[100,160,255],Mx);
t.moveTo(0,0);t.lineTo(0,h);t.lineTo(w,h);t.lineTo(w,0);t.endFill();
b.draw(mc,M); b.draw(t,M,null,12);
t.removeMovieClip();
mc.attachBitmap(b,2);
}
this.createEmptyMovieClip("holder_mc",this.getNextHighestDepth());
var loader = new MovieClipLoader();
loader.addListener(this);
loader.loadClip("http://www.disegnocentell.com.ar/ejemplos/img/1.jpg",holder_mc);
function onLoadInit(tm){
espejo(tm);
}
Pasar imagen a escala de grises:
Resultado:
Código utilizado:
import flash.display.BitmapData;
import flash.geom.Matrix;
import flash.geom.Rectangle;
import flash.geom.Point;
function BMP2GrayScale(holder_mc){
myBitmap = new BitmapData(holder_mc._width, holder_mc._height,true,0x00FFFFFF);
m = new Matrix();
m.scale(1,1);
m.translate(0,0);
myBitmap.draw(holder_mc,m);
attachBitmap(myBitmap,1);
var rect:Rectangle = new Rectangle(0, 0, myBitmap.width, myBitmap.height);
var bmpTem=new BitmapData(myBitmap.width, myBitmap.height,true,0x00FFFFFF);
bmpTem.copyPixels(myBitmap,new Rectangle(0, 0, myBitmap.width, myBitmap.height),new Point(0,0));
bmpTem.copyChannel(bmpTem, rect, new Point(0, 0), 2, 1);
bmpTem.copyChannel(bmpTem, rect, new Point(0, 0), 2, 2);
bmpTem.copyChannel(bmpTem, rect, new Point(0, 0), 2, 4);
myBitmap.copyPixels(bmpTem,new Rectangle(0, 0, myBitmap.width, myBitmap.height),new Point(0,0));
bmpTem.dispose();
}
this.createEmptyMovieClip("holder_mc",this.getNextHighestDepth());
var loader = new MovieClipLoader();
loader.addListener(this);
loader.loadClip("http://www.disegnocentell.com.ar/ejemplos/img/1.jpg",holder_mc);
function onLoadInit(tm){
BMP2GrayScale(tm);
}
(Podés descargar los archivos de estos ejemplos utilizando el menú de descargas ubicado en el lateral izquierdo de esta misma página.)