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