Dibujar en un cristal con vaho en Actionscript 3.0
Este ejemplo muestra como hacer el efecto de «pintar sobre el vaho» en un cristal. Esta es la manera más sencilla que en encontrado de hacerlo, desde el punto de vista de alguien con pocos conocimientos de programación. Para hacer este efecto necesitamos:
-Imagen del cristal con vaho:
-Imagen de cristal sin vaho:
Los pasos a seguir serían los siguientes:
-Importar las dos imágenes a Flash, y poner cada una en una capa (la imagen sin vaho por encima de la con vaho), en la posición (0,0)
-Crear un clip vacio y llamarlo «Mascara_mc». Ponerlo en (0,0)
-Hacer que «Mascara_mc» sea la mascara para la imagen sin vaho. Aquí tenemos un pequeño «problema», y es que al estar vacio, no nos va a aplicar bien la máscara. Por ello, antes de ponerlo como máscara, nos metemos dentro de «Mascara_mc» y dibujamos un pequeño cuadrado.
La linea de tiempo nos quedaría asi:
-Por último, tenemos que programar la escena, para que cuando hagamos click, se dibuje dentro de «Mascara_mc» y se vaya destapando la imagen con vaho.
El código en Actionscript 3.0:
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 36 37 38 39 |
package{ //Importo las clases necesarias import flash.display.MovieClip; import flash.display.Shape; import flash.events.Event; import flash.events.MouseEvent; public class Vaho extends MovieClip{ private var pintar:Boolean = false public function Vaho():void{ //Añado los eventos al escenario stage.addEventListener(MouseEvent.MOUSE_DOWN,siPintar); stage.addEventListener(MouseEvent.MOUSE_UP,noPintar); stage.addEventListener(MouseEvent.MOUSE_MOVE,mover); } private function siPintar(e:Event):void{ pintar = true; } private function noPintar(e:Event):void{ pintar = false; } private function mover(e:Event):void{ if(!pintar)return; //Dibujo un circulo alrededor del puntero cada vez que muevo el ratón y pintar = true //Estos circulos van rellenando Mascara_mc y haciendo que se destape la imagen sin vaho Mascara_mc.graphics.lineStyle(10,0x000000); Mascara_mc.graphics.beginFill(0x000000); Mascara_mc.graphics.drawCircle(mouseX,mouseY,10); Mascara_mc.graphics.endFill(); } } } |