Cristalab

                 ¿Quieres registrarte?

Reproducir una animación marcha atrás con ActionScript

Por: boyere
30 de Mayo del 2007
119 de clabLevel
Otros artículos de boyere
8,944 visitas

Con esta función podemos dar marcha atrás a nuestras animaciones. Por ejemplo, si tenemos una página, en el que se vayan montando los contenidos mediante animación y queremos que al pulsar un botón se desmonten los contenidos para desaparecer e irse a otra página.

Código :

// Función para reproducir un movieclip marcha atras
function marcha_atras_antes_Principal(_movieclip:MovieClip, fin:Boolean)
{
   //si el movieclip solo tiene un fotograma no se puede hacer retroceder
   if (_movieclip._totalframes > 1) {
      
      //se programa el evento on enter frame
      _movieclip.onEnterFrame = function()
      {
         mc_Entrar._visible = false;
         
         //hacemos un trace para poder visualizar la ejecución de la función.
         trace("fotograma actual: " + _movieclip._currentframe);
         if (_movieclip._currentframe <= 1) {
            
            //anulamos la función que estaba sociada al evento asociando al evento el valor nulo.
            //si no hicieramos esto la funcion seguiria ejecutandose lo que perjudicaria
            //el rendimiento de la aplicación.
            _movieclip.onEnterFrame = null;
            if (fin == true) {
               loadMovie("contenido_AF.swf", mcContenido.mcContenedor);
            }
         }
         
         //retrocedemos un fotograma en la linea de tiempo.*
         this.prevFrame();
      };
   }
}


Espero que os sirva, saludos.


Artículos Relacionados


Etiquetas actionscript

Comentarios | Enviar un comentario
Buen código boyere (y)

Para utilizarlo de forma rápida se puede simplificar así:

Código :

onEnterFrame = (_currentframe > 0) ? prevFrame : null;

:wink:
Por: Zguillez
Wtf! Todos deberiamos odiarte, Zg.... :P

Buen tip, y buen aporte de Zguillez tambien
Por: Lunatic_blog
Salu2 !
Hace tiempo extendí la clase MovieClip para un proyecto, la clase permite correr unen función del parametro de velocidad

Código :

class com.zigma.movieclip.clipUtils extends MovieClip
{
/**
   * Lleva al MovieClip a determinado frame pasando por los frames intermedios
   * 
   * @param frame Numero del frame al que se desea llegar
   * @param vel Numero que representa la velocidad de la transicion
   * 
   * uso:
   * {@code
      MovieClip.playtoFrame(50,2);
   * }
   */ 
   function playtoFrame (frame:Number, vel:Number){
      vel == undefined ? vel = 1 : vel = vel;
      if (this._currentframe < frame){
         var velocidad =  vel;
         var direccion = "adelante";
         var condicion = this._currentframe >= frame;
      } else {
         var velocidad = -vel;
         var direccion = "atras";
         var condicion = this._currentframe <= frame;
      }
      this.onEnterFrame = function (){
         this.gotoAndStop (this._currentframe   velocidad);
         if (condicion){
            this.stop ();
            this.gotoAndStop (frame);
            trace (" ya llegue al "   frame   " !");
            delete this.onEnterFrame;
         }
      };
   }
}


Por: Cesar Rdz_blog
Cesar Rdz_blog, yu codigo no funciona algo esta mal
Salutes
Por: RanciD220_blog
eso esta muy bien
Por: punk-boy18_blog
en que parte de la nimacion se pone este codigo, en la primer fotograma?
Por: chango_blog

chango_blog :

en que parte de la nimacion se pone este codigo, en la primer fotograma?

El código lo colocas en el primer fotograma. Y en el momento en el que quieras reproducir hacia atras un movieclip haces una llamada a la funcion: marcha_atras_antes_Principal(_movieclip:MovieClip, fin:Boolean)
Por: Zguillez
Hola Maestros!
Quisiera hacer un menu en el que, cuando el mouse este sobre uno de los botones, éste se despligue otros submenús abajo.
Muchos le ponen el signo mas y el signo menos. me explique?
gracias gracias
Por: Timbi_blog
Teendrán un archivo o tutorial con la aplicación de este ejemplo, lo que pasa es que he tratado de usarlo sin exito... Lo que intento es llamar una pelicula animada con cada boton del menu principal y quisiera que al cambiar de pelicula, se invirtiera la animacion antes de pasar a la otra pelicula
Por: Ramss-blog
chido
Por: chido-blog
aja perfecto funciona, pero...

elabore para probar el tutorial corto de Zguillez , una anomacion muy simple, en el primer fotograma STOP, hay un boton y un cuadrado, al hacer click el boton indica ir al siguiente fotograma y reproducir la animación

on(release) {
gotoAndPlay(2);
}

y para en el fotograma 50, en este hay un boton

on(release) {
onEnterFrame = (_currentframe > 1) ? prevFrame : null;
}

y funciona, retrocede....pero cuando llega de nuevo al fotograma 1 el boton inicial ya no funciona....que puede estar pasando?
Por: El macho-blog
Chido-blog, lo único q tienes que poner es lo mismo codigo en el primer on(release), pero en vez de prevFrame, nextFrame.

Queda así:

on(release) {
onEnterFrame = (_currentFrame > 1) ? nextFrame : null;
}

y para en el fotograma 50, en este hay un boton

on(release) {
onEnterFrame = (_currentFrame > 1) ? prevFrame : null;
}
Por: dashaft-blog
Deja un comentario
IMPORTANTE

Recuerda ser respetuoso, no insultes a otras personas, ni uses palabrotas, hay una persona al otro lado de la pantalla.

Habla bien, NO ESCRIBAS EN MAYUSCULA TODO, no escribas como en un SMS, evita cosas como "ke", "x q" y demás abreviaciones.

Aquí funcionan las etiquetas de los foros, puedes usar [b] para negrita, [img] para las imágenes, [url] para los enlaces, etc.

Si tienes preguntas técnicas, envíalas mejor al foro.