TweenLite
5 seguidores
Hola a todos.
He empezado a usar esta fantástica librería para as2.
Pero me he encontrado con un pequeño problema:
Tengo un mc que va de A a B, cuando llegue a B, quiero que inmediatamente regrese a A.
He intentado poner dos TweenLite, el primero normal y el segundo con delay.. pero no funciona, alguna idea de lo que hago mal??
Muchisimas gracias :D
fernandocomet
Más fácil todavía, en AS2:
TweenLite.to(loquesea_mc, 2, {_x:0, delay:2, overwrite:0, onComplete:onFinishTween, onCompleteParams:[4,cuad_mc]});
function onFinishTween(parameter1:Number,parameter2:MovieClip)
{
TweenLite.to(loquesea_mc, 2, {_x:200, delay:0});
}
//cuad_mc es un moviclip instanciado fuera del escenario
Puedes hacer incluso llamadas recursivas.
Cuando termine uno, hará otro. En AS3 lo mismo cambiando la sintaxis
lukanicos
BuenAS:
Si te has bajado recientemete el paquete de GreenSock (TweenLite, TweenMax, etc.), y quieres plantearte hacerlo con AS3 y TweenMax, podrías utilizar la clase TimelineMax. Es tremendamente fácil de usar, ya que lo hace todo por tí:
//En un array creas todos tus tweens, en el orden que desees.
var tweens:Array = [
TweenMax.to(
//escribe aquí tu primer Tween
),
TweenMax.to(
//escribe aquí tu segundo Tween
),
TweenMax.to(
//escribe aquí tu tercer Tween
)
];
var timelineMax:TimelineMax = new TimelineMax({
tweens:tweens,
//con el parámetro align indicas cómo quieres que se reproduzcan, en este caso, secuencialmente.
align:TweenAlign.SEQUENCE,
//con estos dos parámetros se puede indicar el número de veces que se quiere repetir la secuencia
//y el desfase entre una repetición y la siguiente
repeat:1,
repeatDelay:0.5,
//tienes la posibilidad de hacer algo cuando acabe toda la secuencia
onComplete:completeTimeline
});
function completeTimeline():void
{
trace("Complete TimelineMax");
}
Básicamente consiste en crear un array (una matriz) con todos los Tweens que quieres hacer, y se la pasas a una instancia de la clase TimelineMax, y le indicas en el parámetro align cómo quieres que se reproduzca (además de secuencial, hay veces que interesa que empiecen todas a la vez, o en forma de yo-yo; o sea, que lleguen al final y vuelvan al principio en sentido inverso).
Además, puedes pasarle parámetros como "repeat", en el que indicas el número de repeticiones (cuidado, que se refiere al número de veces que se repite ADEMÁS de la primera; o sea, si quieres verlo 3 veces, debes pasar el valor 2).
Para gente como yo, que soy muuuuy perro, es supercómodo.
Un saludo.
lluis_garcia
Gracias x8!!
Ahora puedo realizar las dos animaciones encadenadas. :)
A parte de un peso ligeramente mayor... Me recomiendas usar TweenMax en lugar de TweenLite?
matmac Profesor Plus
les recomiendo Tweener, esta clase para AS3 tiene una funcion que se llama "onComplete" que cuando termina un tween inicia otro, además tiene otra muy útil que es "onStart", en fin... está muy bien y la sintaxis es muy simple.
x8
A mi también me trajo este tema de cabeza hace un tiempo y es que no sabía que Tweenlite tiene el overwrite por defecto distinto al de TweenMax.
Un simple OverwriteManager.init() hará que no se sobreescriban las tweens y se debería de resolver tu problema.
Un saludote.
lluis_garcia
Gracias de nuevo.
Por lo que veo, tendré que migrar todo el código a AS3... grnys grnys... :(
Voy a probar a ver que tal.
lukanicos
BuenAS:
¿Puede que lo hayas configurado con los valores 0 ó 1? Si es el caso, los tweens se superponen. Configura antes de lanzar los Tweens :
OverwriteManager.init(2):
Aunque, no sé, por defecto tiene el valor 2, y no deberían superponerse.
En AS3 puedes añadirlo directamente al Tween, pasando la propiedad overwrite:2.
Un saludo.
lluis_garcia
GraciAS por tu respuesta Lukanicos. ;)
Se que el problema reside en algo del overwriteManager, pero no veo el pq. Debería poder haber algún modo de poder encadenar diversos Tweens en un mismo mc.
lukanicos
BuenAS:
¿Al segundo Tween le das como tiempo de retraso (delay) el MISMO valor que el tiempo del primer Tween (segundo parámetro)? Es que debería funcionar.
Si puedes optar por ActionScript 3, échale un vistazo a:
TimelineMax Sequence/Group multiple Tweens
que permite lanzar secuencias de Tweens y tú no te tienes que preocupar de nada. Muy útil, sobre todo, para animaciones complejas. Pero como digo ES AS3.
Un salujdo.