Un ejemplo sencillo del uso de variables es el que sigue: como sabemos el uso de Action Script minimiza el tamaño de nuestras películas, podemos lograr efectos que de otra manera no sería posible y aumenta la interactividad. Vamos a lo práctico que es lo que más nos interesa. En este caso vamos a crear un contador que repita una animación (twenen motion) un determinado número de veces antes de seguir a otro frame. "¡Eso es fácil!" dirás, "copio y pego los mismos frames y listo"...ajá, esa es la manera más cómoda y más pesada para nuestra película (si tu efecto tuviera 50 frames tendrías 150 frames de lo mismo) pero ¡acá entra Action Script para solucionar el problema! y es que en flash hay que guardar la línea ;)
Veamos el panorama: Tenemos un motion tween de una bolita que se mueve de izquierda a derecha, contenida en los frames 1 al 20 y queremos que el motion tween se repita 4 veces antes de ir al frame 21. Como dijimos, tenemos que ser ligth, así que usamos action script.
Paso 1. Movemos los frames de nuestra animación y hacemos que empiece desde el frame 2, el frame 1 contendrá una copia del frame 2 (todavía no preguntes porqué, ya verás) ahora al terminar las repeticiones tendrá que ir al frame 22, eso es lo de menos.
Paso 2. En el frame 1 usando el panel de AS creamos esta variable:
animacion=0 (ajá, el 0 no tiene comillas, es una expresión, por tanto es un valor no un texto)
Paso 3. En el frame 21 (donde acaba la animación) ponemos esto:
animacion = Number(animacion)+1;
// toma el valor actual de "animacion" y le suma 1 y ese nuevo valor lo toma nuevamente como propio. El "NUMBER" sirve para asegurarnos que el valor de la variable "animacion" es un número.
if (Number(animacion)>=4) {
// Se crea un condicional donde si el valor de "animacion" es mayor o igual a 4...
gotoAndStop (22);
// ...que vaya y se pare en el frame 22
} else {
// sino...
gotoAndPlay (2);
// que vaya al frame 2
}
Todo lo que va delante de las "//" es un comentario, no "molesta" el script ya que flash se lo salta.
Si hay algunas cosas que no entiendes lee atentamente y relee el "Manual de Action Script" de Macromedia, ayuda un montón".
La accion If (está bien explicado y bonito en la pag 29 del susodicho manual) es para hacer bifurcaciones lógicas, osea coloca opciones para una condición (en el caso anterior de que si el número que contiene la variable "animación" es mayor o igual que 4 haga tal cosa y sino haga esto otro).
Ahora te explico como funciona el script: La animación comienza, pasa por el frame 1 y recoge la variable "animacion" y recoge su valor inicial que es 0. Ahora llega al frame 21 y se encuentra que ella misma se aumenta 1 y el resultado es su nuevo valor (la primera vez: 1), lee el aviso del If...¡no! sólo tiene como valor 1 así que se va al frame 2, vuelve al frame 21 se aumenta 1, ahora su valor es 2, lee el aviso del if...¡no! todavía no, vuelve al frame 2...y así hasta que cuando alcanza 4 cumple con lo que pide el If y recién puede pasar al frame 21. ¿Por qué vuelve al frame 2 y no al 1? ajá, por eso tuvimos que poner una copia del frame de inicio de la animación en el frame 1 para que el efecto sea real, si volviera al frame 2 encontraría la animación avanzada y eso no queremos. Si volviera al frame 1 el loop nunca se cumpliría ya que siempre volvería a tener un valor de 0, ya que allí se le da ese valor, y la cosa es que su valor aumente, para iniciarlo esta bien que empieze como 0 pero de allí ya no se toca ese valor.
Como ves una variable se puede evaluar, aumentar e incluso que tome nuevamente su mismo valor pero ya cambiado, como se decía antes, el valor de una variable puede cambiar pero el contenedor es el mismo, y de eso nos aprovechamos en este ejemplo.
Ahora pasa de lo abstracto a lo real y bájate el FLA
Usuarios que han visto este tema también han visto...
- Proteger SWF con Flash
- Agrupar paneles en Flash
- Cielo en movimiento con Flash MX
- Clase para dibujar líneas de puntos en ActionScript 3
- Formulario en Flash usando FormMail
Información legal | Política de Privacidad | Contacte con nosotros
Otro proyecto de Factoría de Internet. Copyright© 2003-2011 Factoría de Internet S.L.. Todos los derechos reservados.