Crear reflejos por medio de Actionscript 3.0

Etiquetas: BitmapData Bitmap draw cachaAsBitmap createGradientBox beginGradientFill

Esta función recibe como parámetro un MovieClip y crea su reflejo. Para ello se copia la imagen del mc en un Bitmap y después de le aplica como máscara un degradado. Para modificar el reflejo se puede jugar con los valores de alphas y ratios con los que se crea el degradado.

function Reflejo(mc) {
 
	//Creo un objeto Bitmap en el que esté dibujado el clip que paso como parámetro
	//Le doy la vuelta indicando que scaleY = -1;
	var bmd:BitmapData = new BitmapData(mc.width,mc.height);
	bmd.draw(mc);
	var bm:Bitmap = new Bitmap(bmd);
	bm.x = 0;
	bm.scaleY = -1;
	bm.y = mc.height * 2;
	bm.cacheAsBitmap = true;
 
	//Creo un degradado para la mascara por medio de createGradientBox. Jugando con los valores
	//de alphas y ratios se puede ajustar la longitud del reflejo. 
	var mascara = new Sprite;
	var tiporelleno:String = GradientType.LINEAR;
	var colores:Array = [0x00000000, 0x00000000];
	var alphas:Array = [0.5, 0];
	var ratios:Array = [0, 180];
	var matr:Matrix = new Matrix();
	matr.createGradientBox(mc.width, mc.height, Math.PI/2, 0, 0);
	var spreadMethod:String = SpreadMethod.PAD;
	mascara.graphics.beginGradientFill(tiporelleno, colores, alphas, ratios, matr, spreadMethod);
	mascara.graphics.drawRect(0,0,mc.width,mc.height);
	mascara.x=0
	mascara.y=mc.height;
	mascara.cacheAsBitmap = true;
 
	//Aplico la máscara a la copia del clip, y añado ambos al clip
	bm.mask = mascara;
	mc.addChild(bm);
	mc.addChild(mascara);
}
 
Reflejo(Imagen_mc);

Comentarios:
Maximiliano dijo:
Muy bueno . Queda genial . un saludo y gracias
Victor dijo:
Muy util!
Dejar un comentario:
Tu nombre (obligatorio):

E-mail (obligatorio, no se mostrará):

Web: