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);
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.
Buen tip 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:Otaku RzO
Perdonen si me leo muy egolatra pero en donde se encuentra lo dinamico?, por que a mi parecer solamente estas enseñando el modo de uso. 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. Por:quien yo?_blog
@Si!_tu_blog
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.
Muy buen tip, y además bastante claro. Sólo tengo una consulta, basado en los ejemplos podemos hacer animaciones lineales de X a X o de Y a Y. Cual sería la variación para hacer una animación diagonal?
Gracias Por:vtisnado_blog
vtisnado_blog :
Muy buen tip, y además bastante claro. Sólo tengo una consulta, basado en los ejemplos podemos hacer animaciones lineales de X a X o de Y a Y. Cual sería la variación para hacer una animación diagonal?
Gracias
todos los ejemplos son de animaciones lineales en _x Por:penHolder
Creo que eso ya lo sabe, lo que el pregunta, a lo que entiendo, es como hacer una animacion que en lugar de que sea solo lineal en orizontal o en vertical, lo haga en diagonal, creo. 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. Por:Señor Oz_blog
vtisnado_blog :
Muy buen tip, y además bastante claro. Sólo tengo una consulta, basado en los ejemplos podemos hacer animaciones lineales de X a X o de Y a Y. Cual sería la variación para hacer una animación diagonal?
Gracias
no habia leido bien...
solo debes conbinar, osea un transicion en x y otra en y
Esta muy bien explicado la clase tween de Actionscript 2 para animaciones dinámicas Por:Adriana_blog
hola penholder: espectacular el tutorial... la verdad recien me inicio en codigo action script y buscaba cosas sencillas como estas que me mostraran resultados sin tener que entender de otras funciones o codigos mas complejos... aca agradecido saludos me voy a estar pasando mas seguido por aca Por:alejandro_blog
Muy buen tuto... la verdad lo estoy aplicando en unos bannercitos que los estoy haciendo.. pero tengo una pregunta ... como puedo hacer a traves de codigo varias animaciones.. es decir una despues de otra ... lo estoy intentando y siempre hace la ultima animación ... ?? que será... Por:chamaco08_blog
chamaco08_blog :
Muy buen tuto... la verdad lo estoy aplicando en unos bannercitos que los estoy haciendo.. pero tengo una pregunta ... como puedo hacer a traves de codigo varias animaciones.. es decir una despues de otra ... lo estoy intentando y siempre hace la ultima animación ... ?? que será...
En este momento lo aplico...sobradoooo!! Por:etzekiel_blog
Lo que yo siempre me he preguntado con respecto a los movimientos de objetos en flash (incuso algo tan simple y pequeño como este circulo) es por que se ve tan poco fluido? incluso generando algunos frames en donde aparece como una especie de linea sobre el objeto... lo cierto es que si fuese un objeto grande, y con un mapa de bits adentro... bueno... podria entender la excusa de que como flash no tiene aceleracion por hardware, el micro se satura y no logra generar los frames necesarios... pero aun en estos casos... no se ve fluido. lo mismo con la interpolacion de mapas de bits... por que es tan mala la interpolacion en flash? uno achica una foto y no queda para nada bien, incluso dictaminando que es un png (si fuese el caso) o modificando la calidad de la imagen... y ni hablar si justamente lo que deseamos es hacer una animacion en donde se juega con el tamaño de un mapa de bits... Por:guille_blog
justo termino de escribir el anterior post (hace unos dias) y revisando el ActionScript 2.0 Language Reference me encuentro con que ahora, con el player 9 se puede usar MovieClip.forceSmoothing para evitar los problemas que mencionaba aqui arriba.... ahora todo se ve mucho mejor interpolado.. antes a esto, habia forma de lidiar con estos problemas?? Por:guille_blog
Que buen tip.
Gracias por compartir el conocimiento sin cobrr canones. Por:salva65f_blog
Hola, gracias por el tip, está genial.
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.