già, mi sono scordato un appunto importante, ossia quando utilizzi delle tween con lo stesso nome, magari se utilizzi funzioni per attivare le tween ecc... devi fare attenzione alla sovrapposizione, infatti diverse tween contemporanee con lo stesso nome vengono anche eseguite, ma spesso creano dei blocchi perchè il player non riesce a gestirle, quindi di regola meglio sempre dare nomi univoci alle tween, ad esempio io di solito per gli spostamenti in X e Y utilizzo una funzione di questo genere (in una classe con varie funzioni di diversa utilità):
Codice PHP:
package {
import flash.display.*;
import fl.transitions.*;
public class Com {
private static var __w:Object = {};
public static function move(t:DisplayObject,xm:Number,ym:Number,e:Function=null,d:Number=1,s:Boolean=true):Tween {
__w['txm'+t.name] = new Tween(t, "x", e, t.x, xm, d, s);
__w['tym'+t.name] = new Tween(t, "y", e, t.y, ym, d, s);
return __w['txm'+t.name];
}
public static function scale(t:DisplayObject,xs:Number,ys:Number,e:Function=null,d:Number=1,s:Boolean=true):Tween {
__w['txs'+t.name] = new Tween(t, "scaleX", e, t.scaleX, xs, d, s);
__w['tys'+t.name] = new Tween(t, "scaleY", e, t.scaleY, ys, d, s);
return __w['txs'+t.name];
}
public static function rotate(t:DisplayObject,r:Number,e:Function=null,d:Number=1,s:Boolean=true):Tween {
__w['tr'+t.name] = new Tween(t, "rotation", e, t.rotation, r, d, s);
return __w['tr'+t.name];
}
}
}
e la usi ad esempio così ("palla" è un movieclip a forma di cerchio, disegnato sullo stage):
Codice PHP:
import fl.transitions.easing.*;
stage.addEventListener(MouseEvent.CLICK, clickHandler);
function clickHandler(e:MouseEvent) {
Com.move(palla, mouseX, mouseY, Bounce.easeOut);
}
utilizzando la funzione attraverso la classe puoi anche assegnare un'istanza alla tween e assegnargli gli eventi classici della classe Tween, riprendendo l'esempio di prima
Codice PHP:
import fl.transitions.Tween;
import fl.transitions.TweenEvent;
import fl.transitions.easing.*;
stage.addEventListener(MouseEvent.CLICK, clickHandler);
function clickHandler(e:MouseEvent) {
var t:Tween = Com.move(palla, mouseX, mouseY, Bounce.easeOut);
t.addEventListener(TweenEvent.MOTION_FINISH, finishHandler);
}
function finishHandler(e:TweenEvent) {
trace("New X: "+e.target.obj.x);
trace("New Y: "+e.target.obj.y);
}