Crear reflejos por medio de Actionscript 3.0
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.
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 29 30 31 32 33 34 35 |
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); |