Utilities for Code Hinting and Strict Typing in TweenLite/Filter/Max
- Version: 4.0, Updated 10/21/2009
- File size added to compressed SWF: about 13kb
These AS3 utility classes that can (optionally) be used with TweenLite or TweenMax that address two requests:
- Code hinting - Sometimes it's hard to remember all the special properties that are available in the tweening classes, so code hinting would be very useful. In most decent code editors like Flex Builder, FDT, etc. (NOT the Flash Authoring tool), these classes will trigger code hinting (see screen capture below).
- Strict data typing - Some developers are extremely passionate about strict data typing and they're scared away by TweenLite/Max's "loosey-goosey" treatment of the vars Object. Many others love the flexibility, efficiency, and readability of that same feature. This utility should make it easier on the strict data typing folks.

The utilities are included in the AS3 TweenMax download.
Documentation
Please see the full ASDoc documentation.
Example code
Basically, the idea is that you use a TweenLiteVars for the 3rd parameter in TweenLite.to() or TweenLite.from() calls. Here's a quick comparison:
WITHOUT UTILITY:
-
import com.greensock.TweenLite;
-
import com.greensock.easing.*;
-
-
TweenLite.to(my_mc, 2, {x:300, y:"100", ease:Elastic.easeOut, onComplete:myFunction});
WITH UTILITY:
-
import com.greensock.TweenLite;
-
import com.greensock.data.TweenLiteVars;
-
import com.greensock.easing.*;
-
-
var v:TweenLiteVars = new TweenLiteVars();
-
v.addProps("x", 300, false, "y", 100, true); //with addProps(), you can add up to 10 dynamic properties at a time. addProp() adds one at a time.
-
v.ease = Elastic.easeOut;
-
v.onComplete = myFunction;
-
-
TweenLite.to(my_mc, 2, v);
So there is a bit more code to write, but for some developers, the strict typing and code hinting may be well worth the tradeoff. I personally prefer the shorter, more flexible loose style, but several well-respected developers have said that strict data typing is an absolute must-have for them, and it's the only thing that keeps 'em away from TweenLite/Max. Well, now there are no excuses
FAQ
- Do I have to use this utility in order for TweenLite/Max to work?
Absolutely not. It is completely optional. - Does this utility only work with TweenLite? What about TweenMax?
Don't fret - there is a TweenLiteVars class for use with TweenLite, a TweenMaxVars class for use with TweenMax. All are included in all of the AS3 tween downloads. - Can I use the shorter (not strictly-typed) way to define dynamic variables but still use this class for its code hinting benefits?
Sure, if you prefer, you can pass in variables to the constructor in the short-hand fashion, like so:Actionscript:-
var v:TweenLiteVars = new TweenLiteVars({x:300, y:"100", onComplete:myFunction, ease:Elastic.easeOut});
-
- What about filter tweens?
As of version 0.95, there is a utility class for each type of filter (like BlurFilterVars, ColorMatrixFilterVars, etc.) which can be used like:Actionscript:-
import com.greensock.TweenMax;
-
import com.greensock.data.*;
-
-
var myVars:TweenMaxVars = new TweenMaxVars();
-
myVars.blurFilter = new BlurFilterVars(10, 10);
-
myVars.colorMatrixFilter = new ColorMatrixFilterVars(0xFF0000);
-
TweeenMax.to(my_mc, 2, myVars);
-
Comments (7)

Looks useful, but kind of amusing that you had to build this out to begin with. I guess some people are that hard core about strict typing eh.
Yeah, Gabriel. I hear you. But you might be surprised by how passionately some developers argue the merits of strict data typing. I’m all for it, actually. There are certainly up sides. But there are down sides too.For example, strict datatyping requires more code and (depending on how it’s implemented) can be far less readable. For example:
TweenLite.to(my_mc, 2, {x:300, y:100, scaleX:1.5, scaleY:2, rotation:90, onComplete:myFunction, ease:Elastic.easeOut});
Is much more readable than:
TweenLite.to(my_mc, 2, 300, 100, 1.5, 2, 90, myFunction, Elastic.easeOut);
And it’s less code that an alternate way of strictly data typing:
var myTween:TweenLite = new TweenLite();
myTween.target = my_mc;
myTween.duration = 2;
myTween.x = 300;
myTween.y = 100;
myTween.scaleX = 1.5;
myTween.scaleY = 2;
myTween.rotation = 90;
myTween.onComplete = myFunction;
myTween.ease = Elastic.easeOut;
But again, it’s just my personal opinion. I don’t think it’s a right vs. wrong issue, and I can see the benefits of using strict data typing when debugging very complex applications. Strict typing can also lead to better performance, but for TweenLite/Filter/Max, those speed benefits can’t be fully realized because they need to be able to tween ANY numeric property of ANY Object, dynamically.
Hopefully these utilities will serve the stricter types among us well.
This is excellent, thank you. I have implemented it immediately. While the vars version may have longer code I feel it’s more flexible as I can have conditional values without having to create temp vars to hold them, i.e.:
if (isGoingUp)
{
myTween.y = 0;
} else {
myTween.y = 300;
}
where-as before I would have to had either 2 complete TweenMax calls in there, or start creating a temp var for each value that may have been conditional.
So, not just for the strict freaks at all
Good job (again)!
Although I’m all for strict typing, I have a question… In my experience, class instantiation always come with a performance hit. Have you re-tested Tween Family performance with this? Is there a penalty, or is it negligible?
On a side note, it’s amazing how some people just don’t use a package because it lacks strict typing… One might as well not use PHP, JavaScript… I’ve been working with strict typing since, well, forever (I come from desktop development, made the switch to Web Dev about a year ago), and even I’m not THAT freak…
Keep up!
mjamado, yes, there is a slight performance hit when using the utility, but it’s negligible according to my tests. Even when doing 1500 every 0.5 seconds, it held up very well.
Good grief you have been busy!
nice work
Yes this whole new package is amazing, a big steep forward and I have been waiting for the tweenmanager för AS3 since this spring. I have no problem paying for it. I know how long it takes to develop a application like that. sweet, nice work!









