Hi there,
I think it would be nice to have a static call of the tween engine in Starling like in many other tween engine.
For the moment I use a homemade one...it's not heaven but you can use it if you want :
package
{
import starling.animation.DelayedCall;
import starling.animation.Transitions;
import starling.animation.Tween;
import starling.core.Starling;
import starling.utils.deg2rad;
/**
* ...
* @author ALPHA STUDIO
*/
public class StarlingTween
{
public static const LINEAR:String = "linear";
public static const EASE_IN:String = "easeIn";
public static const EASE_OUT:String = "easeOut";
public static const EASE_IN_OUT:String = "easeInOut";
public static const EASE_OUT_IN:String = "easeOutIn";
public static const EASE_IN_BACK:String = "easeInBack";
public static const EASE_OUT_BACK:String = "easeOutBack";
public static const EASE_IN_OUT_BACK:String = "easeInOutBack";
public static const EASE_OUT_IN_BACK:String = "easeOutInBack";
public static const EASE_IN_ELASTIC:String = "easeInElastic";
public static const EASE_OUT_ELASTIC:String = "easeOutElastic";
public static const EASE_IN_OUT_ELASTIC:String = "easeInOutElastic";
public static const EASE_OUT_IN_ELASTIC:String = "easeOutInElastic";
public static const EASE_IN_BOUNCE:String = "easeInBounce";
public static const EASE_OUT_BOUNCE:String = "easeOutBounce";
public static const EASE_IN_OUT_BOUNCE:String = "easeInOutBounce";
public static const EASE_OUT_IN_BOUNCE:String = "easeOutInBounce";
public function StarlingTween() {}
static public function to(target:Object, speed:Number, params:Object):void
{
var easing:String = params["ease"] == null ? Transitions.EASE_OUT_BACK : params["ease"];
var tween:Tween = new Tween(target, speed, easing);
var key:String;
for (key in params)
{
switch(key)
{
case "delay" :
tween.delay = params["delay"];
break;
case "ease" :
break;
case "onComplete" :
tween.onComplete = params["onComplete"];
break;
case "onCompleteParams" :
tween.onCompleteArgs = params["onCompleteParams"];
break;
case "onUpdate" :
tween.onUpdate = params["onUpdate"];
break;
case "onUpdateParams" :
tween.onUpdateArgs = params["onUpdateParams"];
break;
case "onStart" :
tween.onStart = params["onStart"];
break;
case "onStartParams" :
tween.onStartArgs = params["onStartParams"];
break;
case "rotation" :
tween.animate(key, deg2rad(params.rotation));
break;
default :
tween.animate(key, params[key]);
}
}
Starling.juggler.add(tween);
}
static public function from(target:Object, speed:Number, params:Object):void
{
var easing:String = params["ease"] == null ? Transitions.EASE_OUT_BACK : params["ease"];
var tween:Tween = new Tween(target, speed, easing);
var tabKey:Array = [];
var key:String;
for (key in params)
{
switch(key)
{
case "delay" :
tween.delay = params["delay"];
break;
case "ease" :
break;
case "onComplete" :
tween.onComplete = params["onComplete"];
break;
case "onCompleteParams" :
tween.onCompleteArgs = params["onCompleteParams"];
break;
case "onUpdate" :
tween.onUpdate = params["onUpdate"];
break;
case "onUpdateParams" :
tween.onUpdateArgs = params["onUpdateParams"];
break;
case "onStart" :
tween.onStart = params["onStart"];
break;
case "onStartParams" :
tween.onStartArgs = params["onStartParams"];
break;
case "rotation" :
tabKey.push( { key:"rotation", to:target.rotation, from:deg2rad(params.rotation) } );
break;
default :
tabKey.push( { key:key, to:target[key], from:params[key] } );
}
}
var i:int;
var lengthTab:int = tabKey.length;
for (i = 0; i < lengthTab ; i++)
{
target[tabKey[i].key] = tabKey[i].from;
tween.animate(tabKey[i].key, tabKey[i].to);
}
Starling.juggler.add(tween);
}
static public function remove(target:Object):void
{
Starling.juggler.removeTweens(target);
}
static public function delayedCall(delay:Number, callback:Function, params:Array=null):void
{
var dc:DelayedCall = new DelayedCall(callback, delay, params);
Starling.juggler.add(dc);
}
static public function removeAll():void
{
Starling.juggler.purge();
}
}
}
You can use this like :
StarlingTween.from(myImage, 1, { delay:.5, scaleX:0, scaleY:0 } );