Cristalab

Eventos de la clase Tween de Actionscript 2

Por: penHolder + 04.12.2007

Antes de leer este tip, es necesario que leeas la primera parte de la Clase Tween, ya que esta vez veremos las funciones para controlar las animaciones a medida que se ejecutan.

La clase Tween trae por defecto una serie de eventos que nos permiten controlar sus interpolaciones más efectivamente, vamos a ver uno a uno con un ejemplo de su funcionamiento.

onMotionChanged


Esta función nos permite asignar eventos medida que la animación se ejecuta, osea mientras dura; veamos un ejemplo, vamos a iniciar un movimiento en x y vamos a mostrar en un campo de texto la posición a cada instante.

Código :


import mx.transitions.Tween;
import mx.transitions.easing.*;
//
var miTween:Tween = new Tween(miClip, "_x", Strong.easeInOut, 5, 320, 2, true);
//
miTween.onMotionChanged = function() {
   //
   out = "la posición en x es: " + Math.round(this.position);
};



onMotionFinished


Con esta funcion podemos ejecutar acciones una vez finalizada la animacion.
veamoslo con un ejemplo

Código :


import mx.transitions.Tween;
import mx.transitions.easing.*;
//
var myTween:Tween = new Tween(miClip, "_x", Strong.easeInOut, 5, 320, 2, true);
//
myTween.onMotionFinished = function() {
   //
   out = "Tween finalizada.";
};



onMotionStarted


Mediante esta función es posible asignar eventos al iniciarse la animación, ideal para inicializar variables, cabe aclarar que la función de por si no funciona sola, debe se llamada mediante miTween.start(); ya que se ejecuta una vez que la animación ha terminado y se vuelve a iniciar o bien si la animación ha sido detenida con miTween.stop(); Mejor veamos un ejemplo:
vamos a declarar dos tweens, una para _x y otra para _alpha, de esta manera, vamos a detener el movimiento en x y suspenderlo hasta que la trancicion de alpha se haya ejecutado

Código :


import mx.transitions.Tween;
import mx.transitions.easing.*;
//
var transparencia:Tween = new Tween(miClip, "_alpha", Strong.easeInOut, 0, 100, 2.5, true);
var moviemiento:Tween = new Tween(miClip, "_x", Strong.easeInOut, 5, 320, 2.5, true);
//
movimiento.stop();
//
transparencia.onMotionFinished = function(){
   movimiento.start();
}
//
movimiento.onMotionStarted = function() {
   //
   out = "iniciando movimiento en x...";
};



onMotionResumed


Con esta función podemos "pausar" una animación y reanudarla desde el momento donde fue detenida. Del mismo modo que con onMotionStarted ésta debe ser llamada mediante miTween.resume(); Vamos a verlo con un ejemplo:
tendremos nuestra animación mas un botón para detenerla y otro para reanudarla

Código :


import mx.transitions.Tween;
import mx.transitions.easing.*;
//
var miTween:Tween = new Tween(miClip, "_x", Strong.easeInOut, 5, 320, 5, true);
//
btn_stop.onRelease = function() {
   //
   miTween.stop();
   out = "Tween detenida.";
}
//
btn_resume.onRelease = function() {
   //
   miTween.resume();
};
//
miTween.onMotionResumed = function() {
   //
   out = "reiniciando...";
};



yoyo


Yoyo() es una función que sirve para retroceder una animación, algo muy útil por ejemplo cuando hacemos botones; veamos un ejemplo de un botón con alpha:

Código :


import mx.transitions.Tween;
import mx.transitions.easing.*;
//
var transparencia:Tween;
//
miClip.onRollOver = function(){
   //
   transparencia = new Tween(this, "_alpha", Strong.easeOut, 100, 50, 2.5, true);
};
miClip.onRollOut = function(){
   //
   transparencia.yoyo();
};



con yoyo() tambien podemos por ejemplo hacer un loop, combinando con onMotionFinished, podemos lograr algo asi:

Código :


import mx.transitions.Tween;
import mx.transitions.easing.*;
//
var myTween:Tween = new Tween(miClip, "_x", Strong.easeInOut, 5, 320, 1.5, true);
//
myTween.onMotionFinished = function() {
   //
   myTween.yoyo();
   out = this.position;
};



Bueno espero sirva y le sea útil Guiño

Etiquetas actionscript

Comentarios | Enviar un comentario
Exelente penHolder!!
Por: Kinduff
Buen Tip Guiño
Por: Zguillez
Muy buen tip realmente es muy util lo que haz dejado muchas gracias Guiño
Por: GersonM_blog
Prefiero usar Tweener.
Por: EzeQL.com_blog
¿En ActionScript 3?
Por: Buenisimo_blog
Da la sensación que en el último ejemplo por la velocidad, el poco espacio entre 5 y 350 y por ende la tremenda frenada a lo Formula 1 Muy Feliz. Se corta el sol... Riendo ¿ó me parece?... mmmm... ese efecto me va a dejar virolo ajajjaa Thumbs up

<b>PD:</b> ¿Algún ejemplo para incluirlo en algún juego..F1?
Por: Buenisimo_blog
Me parece muy buen tip... pero, habiendo actionscript 3, no iria siendo hora de olvidarnos del 2.0 y pasar al 3?
Por: Vigotes_blog
muy buen tip... eso ayudara a muchos... Vigotes_blog si te as dado cuenta hay un espacio para AS3 aqui, seria weno q lo revises....
Por: leon2086_blog
Triste aquellos tiempo del Tween Llorando que grandes recuerdos me trae... Sonrisa buen tip
Por: eldervaz
Muy buen tip Muy Feliz
Por: flashreloco
Se ve muy bien penHolder theTangerine !!!...
Thumbs up
Por: M@U
muy bueno el tip
Por: ronald_blog
Muy copado!! jeje se me vienen miles de ideas con esto Riendo
Por: Daniel_blog
la clase tween funciona a la perfeccion pero cuando quiero utilizar onMotionFinished me tira un error q dice q no es un propiedad...q puede ser?....
gracias
Por: ARIEL_blog
Excelente, esta pagina la lleva!
Por: JavierS_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.