Clase 2. animación y programación en flash
Debemos abrir un nuevo documento de Flash y cambiar el color blanco del fondo del escenario por uno oscuro que permita distinguir el efecto de lluvia que se pretende realizar.
Crear un MovieClip, seleccionando en el menú: Insertar > Nuevo símbolo y nombrarlo Rain .
Dentro de dicho MovieClip dibujar varias gotas blancas con escasa separación entre ellas.
Seleccionar en la biblioteca el MovieClip creado (Rain) con el botón derecho del mouse. En el menú hacer click a la opción Linkage y seleccionar la opciónExportar para ActionScript .
Establecer una velocidad de 40 fps.
Ahora, podemos empezar a programar el efecto, para ello se crea dinámicamente un MovieClip llamado Control_mc mediante el siguiente código:
i = _root.getNextHighestDepth();
_root.createEmptyMovieClip("control_mc", i);
Posteriormente, se procede a programar el evento onEnterFrame para que cada vez que entre se ejecute la función que crea las gotas de lluvia llamada, en este caso, CreateRain .
control_mc.onEnterFrame = function() {
CreateRain();
};
Posteriormente se programa la función CreateRain.
function CreateRain() {
/* Crea las gotas de lluvia a partir del patrón Rain que está en la biblioteca */
i = _root.getNextHighestDepth();
tmp = _root.attachMovie("Rain", "Rain_mc"+i, i);
/* Las gotas caen desde una posición horizontal en [-70,500] */
tmp._x = randRange(-70, 500);
/* Inicialmente, se colocan las gotas de lluvia fuera del escenario */
tmp._y = -10;
/* Ahora se particularizan las gotas de lluvia estableciendo aleatoriamente su transparencia,
* velocidad y tamaño */
tmp._y = -10;
tmp._alpha = randRange(1, 40);
tmp.speed = randRange(10, 54);
tmp._yscale = randRange(50, 200);
/* MoveRain es responsable de la dinámica de las gotas de lluvia */
tmp.onEnterFrame = MoveRain;
}
Ahora se programa la función MoveRain.
function MoveRain() {
/* Las gotas descienden según su velocidad prefijada */
this._y += this.speed;
/* Si las gotas han salido del escenario se eliminan inmediatamente*/
if (this._y>340) {
removeMovieClip(this);
}
}
Por último, randRange es una función auxiliar que devuelve un número aleatorio entre dos extremos, ambos inclusive.
function randRange(min:Number, max:Number):Number {
var randomNum:Number = Math.floor(Math.random()*(max-min+1))+min;
return randomNum;
}
Y como resultado tenemos