While over on the flashkit boards yesterday I was going
through the various posts and lending a hand where I could – as I do most
days – and I came across two people who were asking pretty much the same
question: “How do I sequence events using the mx.transitions.Tween class?”
They were both trying to use the onMotionFinished() event
handler to cause events to fire in a set sequence and wanted to know how to
cause an event to be called at a time other than exactly when the motion from
the Tween was completed.
The problem here is that onMotionFinished() isn’t meant for
hardcore event sequencing… that’s what the timeline is for. The timeline is the
only real reason to buy the full flash suite, and ignoring it, especially for
sequencing is ignorant.
In the end I offered three solutions:
- Create a series of setInterval() functions that are timed to
execute your tweens. While not ideally flexible, this method does allow
manipulation of the sequence in milliseconds, and all from a single screen. You
must remember to add a clearInterval() to the function that the setInterval()
calls or else your tween will happen over and over again. - The best solution is to place the tween actions on different
frames and use the timeline to space those frames. This provides an easy to
adjust, graphical representation of the sequence and maintains the tween class
benefit of being able to use built-in easing. - Another solution, while not ideal for large, complex
animations, is to take the tween class away, and manually tween the items on
the timeline.
All of these solutions will work well for static animations
such as those found in intros, scene changes, and button animations, but the
Tween class’s real power is in interactive animation. Interactive animations
are determined at runtime. They use variables that are dependant on the users
actions and are likely to be different every time.
The Tween Class has a cool method called continueTo() which
can give a tween a new destination. If you link that new destination to the
_xmouse or _ymouse properties you’ll quickly see the potential power of the
tween class.
In conclusion, while it is generally best practice to have
all your ActionScript on frame 1 of your Flash movies, it’s ok to use the tween
class (or any ActionScript) in combination with the timeline if you know you
want a series of actions to happen at pre-determined times. That what the
timeline is for.