En un paseo por los foros me he dado cuenta que aun son muchos (incluyéndome hasta no hace mucho
) los que no conocen las ventajas del uso de la clase Tween; es por eso que me decidí a hacer este tip para aclarar como es su funcionamiento.
Empecemos ![]()
Esta clase sirva para hacer transiciones de los valores de las distintas propiedades de un MovieClip: _x, _y, _xscale, _yscale, _alpha...
En primer lugar debemos entender la clase Tween está en el paquete de mx.transitions, por lo que lo más habitual es que tengamos que importarla antes de usarla, como? pues asi:
Código :
import mx.transitions.Tween;
Ahora bien, ¿como la utilizamos?
Pues así:
Código :
var miTween:Tween = new Tween(obj, prop, func, begin, finish, duration, useSeconds)
a primera vista lo que vemos es una variable de tipo Tween, donde:
- obj es el objeto de clip de película al que se refiere la instancia de Tween.
- prop es un nombre de cadena de una propiedad de obj cuyos valores se interpolarán.
- func es el método de suavizado que calcula un efecto de suavizado para los valores de propiedad del objeto interpolado. Osea, lo que antaño conocíamos como easing.
- begin es un número que indica el valor inicial de propiedad del objeto de destino que se interpolará.
- finish es un número que indica el valor final de propiedad del objeto de destino que se interpolará.
- duration es un número que indica la duración del movimiento de interpolación. Si se omite, se establece la duración en infinity de forma predeterminada.
- useSeconds es un valor booleano relacionado con el valor especificado en el parámetro duration, que indica que se deben utilizar segundos si se establece como true o fotogramas si se establece como false.
ejemplo:
Código :
import mx.transitions.Tween; var miTween:Tween = new Tween(miClip, "_x", null, 5, 300, 2, true);
este codigo lo que hace es mover un MovieClip instanciado como "miClip" desde la posición "5" hasta "300" en el eje de x en 2 segundos
Ahora bien esto no termina aqui, como habrán notado en el ejemplo anterior pasamos como null al valor de la función, ya que estas también deben importarse, y se hace de la siguiente manera
Código :
import mx.transitions.easing.*;
esta funcion dispone de 6 métodos a saber:
- back: Extiende la animación cuando se supera el límite de la transición en uno o ambos extremos y produce un efecto como ser empujado hacia atrás desde el límite.
Código :
import mx.transitions.Tween; import mx.transitions.easing.*; var miTween:Tween = new new Tween(miClip, "_x", Back.easeOut, 5, 300, 2, true);
---------------------------------------------------------------------------------------------------------------------------------- - bounce: Añade un efecto de rebote dentro del rango de la transición en uno o ambos extremos. El número de rebotes depende de la duración: cuanto mayor sea la duración, producirá un mayor número de rebotes.
Código :
import mx.transitions.Tween; import mx.transitions.easing.*; var miTween:Tween = new new Tween(miClip, "_x", Bounce.easeOut, 5, 300, 2, true);
---------------------------------------------------------------------------------------------------------------------------------- - elastic:Añade un efecto elástico que está fuera del rango de la transición en uno o ambos extremos, en esata opcion la duración no afecta al grado de elasticidad.
Código :
import mx.transitions.Tween; import mx.transitions.easing.*; var miTween:Tween = new new Tween(miClip, "_x", Elastic.easeOut, 5, 300, 2, true);
---------------------------------------------------------------------------------------------------------------------------------- - regular: Añade un movimiento más lento en uno o ambos extremos. Esta función permite añadir un efecto de aceleración, desaceleración o ambos. (el mas conocido, aquel viejo easing)
Código :
import mx.transitions.Tween; import mx.transitions.easing.*; var miTween:Tween = new new Tween(miClip, "_x", Regular.easeOut, 5, 300, 2, true);
---------------------------------------------------------------------------------------------------------------------------------- - strong:Añade un movimiento más lento en uno o ambos extremos. Este efecto es similar al suavizado Regular, pero más pronunciado.
Código :
import mx.transitions.Tween; import mx.transitions.easing.*; var miTween:Tween = new new Tween(miClip, "_x", Strong.easeOut, 5, 300, 2, true);
---------------------------------------------------------------------------------------------------------------------------------- - none Añade un movimiento uniforme de principio a fin sin efectos, osea lineal lo mismo que si no pusieramos nada (null)
Como se ve en los ejemplos anteriores después de cada método hay otra propiedad, en este caso "easeOut", estos seis métodos tienen a su vez cuatro clases de suavizado:
- easeIn: suavizado al principio de la transición.
- easeOut: suavizado al final de la transición.
- easeInOut: suavizado al principio y al final de la transición.
- easeNone: indica que no se va a utilizar ningún cálculo de suavizado. Sólo se proporciona en la clase de suavizado None.
Espero sirva

Carloz.Yanez :
el de JaLeRu es AS3, si bien la sintaxis no es muy distinta... digamos q son dos caras de una misma moneda
PD: Aquí también hay otro tip de la clase tween en AS2, aunque muestra un ejemplo más concreto.
Por Sabalardo el 25 de Noviembre de 2007
Muy bueno
A los que empiecen a usar la clase Tween les comento unos puntos:
La clase Tween también tiene Eventos, y el que más se usa es el onMotionFinished que nos servirá de callback. Me explico, por ejm: cuando termine el movimiento con el efecto dado, que la esfera desaparezca o que aparezca un texto, en fin lo que queramos.
Ademas el óptimo uso de Tween, cuando comiencen a usarlo mucho), es recomendable también conocer la clase Delegate para manejar correctamente los ámbitos de las funciones
Por quien yo? el 26 de Noviembre de 2007
En otro punto de vista el tutorial muestra todo lo que esta en la ayuda de flash, PERO la DIDACTICA esta EXELENTE, me GUSTO mucho que EJEMPLIFICARAS las funciones o metodos de animacion displonibles. Muy buen tutorial.
Se refiere a que el movimiento es dinámico con esta clase. No ha hacer algo dinámico con él aún.
+++
Muchas gracias, están excelente los ejemplos. Para ser francos no sabía que existiera esta clase... todo ese tipo de funciones de movimiento dinámico los hacia yo mismo creando mis propias clases y creando prototipos de función para después aplicarlos a los movieclips.
Código :
motion("movie_clip00, x, y);Donde "movie_clip00" era el target, 'x' y 'y' era el destino de mi target.
Código :
_global.ease = 0.3; // function motion(clip, nx, ny) { clip.onEnterFrame = function() { clip._x = clip._x+(nx-clip._x)*_global.ease; clip._y = clip._y+(ny-clip._y)*_global.ease; if (nx == Math.round(clip._x) && ny == Math.round(clip._y)) { delete clip.onEnterFrame } }; } //Pero bueno... eso fué en el pasado
Por vtisnado el 26 de Noviembre de 2007
Gracias
vtisnado_blog :
Gracias
todos los ejemplos son de animaciones lineales en _x
Por Señor Oz el 26 de Noviembre de 2007
En cuanto al tip, que yo mas bien lo llamaria un muy buen acercamiento de nuevos conocimientos, pues gracias, penHolder, creo que ya estoy pensando en que poner el uso de esa clase, thank's.
vtisnado_blog :
Gracias
solo debes conbinar, osea un transicion en x y otra en y
Código :
Por Adriana el 27 de Noviembre de 2007
Por alejandro el 28 de Noviembre de 2007
saludos me voy a estar pasando mas seguido por aca
Por chamaco08 el 28 de Noviembre de 2007
chamaco08_blog :
te invito a pasar por el foro de ActionScript asi tratamos tu caso puntual, y no enssuciamos el tip
Por etzekiel el 29 de Noviembre de 2007
Por guille el 29 de Noviembre de 2007
Por guille el 06 de Diciembre de 2007
Por salva65f el 21 de Enero de 2008
Gracias por compartir el conocimiento sin cobrr canones.
Por tr el 09 de Abril de 2008
Tengo una duda que espero q puedan resolverme. La cuestión es que tengo un menú que cargo mediante xml. Necesito que al pulsar uno de los enlaces, todo el menú se desplace hacia la derecha. Consigo hacerlo mediante el tip, y funciona, pero cómo hacer que al volver al pulsar el enlace no ejecute de nuevo el movimiento? Necesito que el menú quede quieto hasta que pulse un botón de volver, y entonces volvería al punto 0,0 original.
El menú que estoy utilizando es este: http://flashden.net/item/mysectionedmenu-xml/5201?ref=encryptme
En el menú creo esta función:
proyectos = function(){
var miTween:Tween = new new Tween(menu, "_x", Regular.easeOut, 30, 100, 1, true);
}
y la llamo desde el xml
<sub title="Clients" gotSub="true">
<sub title="www.ejemplo.es" url="proyectos" target="" type="function"></sub>
gracias
Por j el 16 de Mayo de 2008
por fa
jesaro :
por fa
para eso existe un callback llamado onMotionFinished(), y otros mas eventos asociados a la clase Tween
Por neocix el 24 de Julio de 2008
Pero mi objetivo es crear un circulo que sea semi transparente que aparezca y desaparesca dando un efecto de iluminacion, sobre cosa que aparecen en un video que converti en formato flv y luego mostre a traves del componente FLVPlayback y esta subtitulado con el FLVPlaybackCaptioning.
Mi problema es que el Sprite con la animacion que cree no se ve en modo fullscreen. Solo se puede ver cuando esta fuera de ese modo, y si no le agrego el FLVPlaybackCaptioning no me muestra para tampoco el Sprite.
Podrian guiarme un poco no se si es el metodo mas adecuado. Trato de hacer un tutorial sobre una aplicacion, por eso capturo las pantallas en video luego las hago flv; las muestro en flash, dando las instrucciones con el FLVPlaybackCaptioning y señalo cosas del video con Sprite semitransparentes que se animan dando un efecto de iluminacion
Por exbit el 03 de Septiembre de 2008
GRACIAS por el esfuerzo de ayudar.
Por espidifen33 el 15 de Octubre de 2008
Por pescadito el 26 de Enero de 2009
Por pescadito el 26 de Enero de 2009
on (press) {
import mx.transitions.Tween;
import mx.transitions.easing.*;
var miTween:Tween = new new Tween(circulito, "_x", Elastic.easeOut, 1, 300, 2, true);
}
Espero me puedan ayudar. Muchas gracias
Por Andres Abalos el 27 de Abril de 2009
me sirvio
feclicitaciones
Por ALEGNA_21 el 05 de Mayo de 2009
Por chabri el 09 de Diciembre de 2009
EN EL PRIMER FOTOGRAMA DE TU CAPA PON ESTO:
boton.onRelease=function(){
import mx.transitions.Tween;
import mx.transitions.easing.*;
var miTween:Tween = new new Tween(mc, "_x", Elastic.easeOut, 5, 300, 2, true);
}
ESPERO QUE TE SIRVA
Por low el 12 de Marzo de 2010
Por Que bueno el 12 de Abril de 2010
Por mariadelcirco el 29 de Junio de 2010
Se agradece el esfuerzo, está muy claro, es muy útil. Así se aprende fácilmente.
Sigue haciendo cositas así.
Por mariadelcirco el 29 de Junio de 2010
Se agradece el esfuerzo, está muy claro, es muy útil. Así se aprende fácilmente.
Sigue haciendo cositas así.
Por Antonio Trejo el 12 de Julio de 2010
Por Hamlet el 06 de Octubre de 2010
Por Daniela el 21 de Diciembre de 2010
Vi que preguntaron algo similar arriba pero no veo la solución.
Tengo el siguiente código y lo que necesito es que vuelva a empezar automaticamente. Cómo podría hacer?
import mx.transitions.Tween;
var miTween:Tween = new Tween(animacion, "_x", null, 300, 5, 6, true);
Muchas gracias!
Daniela-
Por Diego DIego el 20 de Junio de 2011
Por Tiber el 19 de Septiembre de 2011
Pero tengo algunas dudas. Quiciera mover un mc_train con la Clase tween sobre diferentes guías de movimiento de forma dinámica.
Existe alguna forma de crear y manipular guías de movimiento con AS de forma dinámica.
Gracias...