Como complemento al Efecto de nieve, les presentamos aca la forma facil, basados en un codigo similar, de hacer un efecto de lluvia para nuestros proyectos 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ón Exportar 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
¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.
Publica tu comentario
El autor de este artículo ha cerrado los comentarios. Si tienes preguntas o comentarios, puedes hacerlos en el foro
Entra al foro y participa en la discusión
o puedes...
¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?
Inicia sesión
¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?
Registrate