AS3 Encadenar animaciones
3 seguidores
Hola a todos!
A ver si alguien puede orientarme con esto:
Estoy tratando de entender cómo puedo encadenar una interpolación con otra, es decir, una vez que acabe tal movimiento, quiero que el objeto tenga una segunda animación, y ando un poco (bastante) perdido.
Cada Tween funciona como quiero, pero mi problema es que no sé como controlar cuándo comienza cada una.
He estado experimentando con la clase Timer, pero, hasta el momento me resulta muy complicado controlar la sincronización de los propios parámetros de los distintos Timers y el de cada Tween, termina siendo un lío de condicionales, muy poco claro...
¿Alguien podría orientarme un poco?
Gracias!
Lukánicos
BuenAS:
Si vas a lanzar varios tweens consecutivamente, mételos en un array y ve llamándalos sucesivamente cuando finalice cada uno:
import fl.transitions.Tween;
import fl.transitions.easing.Regular;
import fl.transitions.TweenEvent;
var tweens:Array = [];
var tween:Tween;
tween = new Tween(
movie,
"x",
Regular.easeInOut,
movie.x,
775,
1,
true
);
tween.stop();
tween.addEventListener(TweenEvent.MOTION_FINISH, nuevoTween);
tweens.push(tween);
tween = new Tween(
movie,
"y",
Regular.easeInOut,
25,
575,
1,
true
);
tween.stop();
tween.addEventListener(TweenEvent.MOTION_FINISH, nuevoTween);
tweens.push(tween);
tween = new Tween(
movie,
"x",
Regular.easeInOut,
775,
25,
1,
true
);
tween.stop();
tween.addEventListener(TweenEvent.MOTION_FINISH, nuevoTween);
tweens.push(tween);
tween = new Tween(
movie,
"y",
Regular.easeInOut,
575,
25,
1,
true
);
tween.stop();
tweens.push(tween);
movie.x = 25;
movie.y = 25;
var contador:int = 0;
nuevoTween();
function nuevoTween(event:TweenEvent=null):void
{
Tween(tweens[contador++]).start();
}
Este código supone que tienes un Sprite llamado movie en el escenario, y lo mueve recorriendo los cuatro lados.
La otra opción que comentas de usar un Timer puede tener el problema de que se desfasen; de la anterior forma, como utilizas el evento MOTION_FINISH, te aseguras que ha terminado un tween antes de empezar el siguiente.
Por otro lado, si tienes pensado hacer secuencias de tweens te recomendaría alguna otra librarie "más amigable" que la nativa Tween; por ejemplo TweenLite/TweenMax o Tweener.
Un saludo
GUSUM
Hola Lukánicos!
Mil gracias por tu dedicada explicación y consejos!!.
Me meteré a experimentar con este código (seguro que surgen nuevas dudas, pero en el camino, se va aprendiendo...); y probaré estas librerías que nombras.
Gracias,
Un saludo!!
madmaus
Hola Gusum,
Sin dudarlo ni un momento, usa la classe TimelineLite / TimelineMax de la libreria tweening de GreenSock, mirate este enlace.
TimelineLite/TimelineMax te permite definir una o varias secuencias de tweens, controlar cada una de ellas independientemente, sincronizarlas, aplicar secuencias de tweens a varios objetos, etc etc etc...
En el link que te paso verás algunos ejemplos de como usarlo ;)
Un saludo!
GUSUM
Hola madmaus!
Gracias por el enlace.
He estado mirando el vídeo de presentación y pareciera ser una librería muy potente; seguro que si consigo hacerme con ella, le sacaré provecho!
Un saludo y gracias!
Lukánicos
BuenAs:
Coincido con madmaus. Puestos a elegir GreenSock (TweenLite/TweenMax, LoaderMax, TimelineLite, TimelineMax, va todo en el mismo paquete).
Además de sus virtudes como librería para animar/hacer precargas tiene la ventaja de que la curva de aprendizaje es muy suave, por no decir "plana". Habrás visto una serie de swf's en cada sección de la página, (no te los bajes, cuando te descargas la librería, junto a la documentación los llevas), pues son un "chuletario" perfecto. Quieres, no sé, animar la sombra de un Movieclip, abres dropShadowFilter y empiezas a probar; cuando te guste la animación, haces copy&paste del campo de texto que aparece en la parte inferior a tu código. ¿Puede ser más fácil? :)
Un saludo.
GUSUM
Hola Lukánicos!
Sí, pinta muy bien, así que, será cuestión de ir probando hasta ir dando con lo que me interesa...
Gracias por las recomendaciones!!
Saludos!