Que Tal? necesito saber como soluciono el siguiente problema: Tengo en el timeline principal dos MC; el primero tiene una animacion de un globo terraqueo que se encuentra en el centro de la pagina y se desplaza hacia atras achicandose, luego que se achica, se queda permanentemente "flotando". Por otro lado tengo un boton el cual es un simple boton de volver; ahora el problema esta en que lo que necesito es que cuando de la orden de volver, el globo deje de hacer la animacion y vuelva a su tamaño y ubicacion original. Yo pienso que tendria que darle un AS al boton el cual diga: cuando cliquee ir al fotograma X dentro del mc X (el globo) rebobinar. Espero que se entienda y si alguien lo sabe, o tiene algun consejo, estaré agradecido.
Si lo que quieres es ir a un fotograma determinado de tu animación y que se quede ahí, puedes hacerlo mediante la función:
Instancia_MC.gotoAndStop(3);
O bien:
Instancia_MC.gotoAndStop("zona1");
Donde 3 es el fotograma, y, en la otra opción, "zona1" es la instancia que le diste al fotograma.
Ahora bien, si lo que quieres es que el MC del globo terráqueo se rebobine (es decir, haga todo lo que hizo pero marcha atrás en la linea de tiempo), pues también tienes diversas opciones.
Este tema de rebobinar MC's ya fue tratado muchas veces, pero te voy a explicar un poco como lograr eso:
Verás, cuando una película flash se reproduce, lo que hace es avanzar un fotograma cada X tiempo (ese tiempo lo defines tu en el panel propiedades, abajo del escenario). Para lograr eso (suponiendo que esta parado, ya que inicialmente siempre siempre se reproduce por defecto), lo que puedes hacer es hacer una acción play();, es lo mas sencillo y lógico.
Pero como he dicho antes, ese efecto también se puede conseguir haciendo que cada vez que pasa ese X tiempo definido antes, la película avance un fotograma ¿no?. Bueno, eso lo podemos lograr con este sencillo código de AS2:
Código :
mc.onEnterFrame=function(){
mc.nextFrame();
}
(recuerda, suponiendo siempre que la película esta detenida, sino te correrá el doble de rápido ) Bien, pues por lógica, el efecto inverso será así:
Código :
mc.onEnterFrame=function(){
mc.prevFrame();
}
Bueno, esto hace que tu película se rebobine continuamente hasta el frame 1. Digo continuamente porque este evento nunca se detendrá, es decir, siempre querrá ir hacia atrás (obviamente como el frame 1 es el primero que hay no podrá ir mas atrás), lo cual comporta un continuo consumo de recursos que es innecesario. Por otra parte, lo que sucede es que no puedes pararlo a la mitad, es decir, eso lo hará rebobinar hasta el 1, no podrías pararlo a mitad del recorrido si quisieras.
Vale, entonces le tenemos que decir que en el frame que nosotros elijamos deje de aplicar el evento onEnterFrmae. Para hacerlo mas sencillo, lo que haremos será ponerlo en un botón, así que al presionar haga todo eso. Al botón, lo instanciamos como "btn".
Código :
btn.onPress = function() {
mc.onEnterFrame = function() {
if (mc._currentframe <= 10) {//si el frame en el que esta ahora es menor o igual a 10
delete (mc.onEnterFrame); //que deje de aplicar el evento
}else{
mc.prevFrame();//si aún esta por encima de 10, que continúe aplicandolo
}
};
};
Bueno, por si te quedan dudas, aquí te pongo un ejemplo: