Chain: Delayed function calling [updated] (6)
November 14th, 2009, under Actionscript, Code snippets.
I created a useful util-class to make delayed function calling easy. You can make a chain of functions, by adding them with a delay in milliseconds. This chain can be executed multiple times, even in reversed order.
Let’s take a look at a simple example of Chain.
myChain.addEventListener( Event.COMPLETE, onComplete);
myChain.add(one, 2000).add(two, 500).add(three, 1000).play(2);
function one():void { trace("one") }
function two():void { trace("two") }
function three():void { trace("three") }
function onComplete(e:Event):void { trace("done.") }
/* trace output:
one two three one two three done.
*/
What is happening here? At the first line we are instantiating the class, and the second line represents what chain does. There is a public function called ‘add’, which is an important part of the class. add(one, 2000) means: execute a function called ‘one’ after 2000 milliseconds. add(two,500).add(three,1000) are functions that are called after one is finished, with other delays. You can create your own rhythm/sequence/pattern. At the end we see play(2), which means: Execute the sequence of functions defined before, and repeat them 2 times. After that, dispatch event COMPLETE.
So that’s basically it. A cool part is you can play it reversed, using playReversed(). I am inspired by jQuery (which has nothing to do with this) to enable the ability to stick functions, but thats optional.
/* trace output:
three two one three two one
*/
Of course you can pauze/continue when you are playing, by calling stop() / doContinue(), and you can determine if it is currently playing using the isPlaying-getter.
These are all the public functions.
public function Chain()
/// Adds a function at a specified interval (in milliseconds).
public function add(func:Function, delay:Number = 0):Chain
/// Start playing the sequence and calling functions
public function play(repeatCount:int = 0):void
/// Start playing the sequence reversed
public function playReversed(repeatCount:int = 0):void
/// Clears sequence list. Data will be removed.
public function clear():Chain
/// Stop playing, use doContinue to play futher from current point
public function stop():void
/// Continue playing after a stop
public function doContinue():Chain
/// Reset indexes
public function reset():void
/// Returns the string representation of the Chain private vars.
public function toString():String
/// Return chain is playing, stopped or completed
public function get isPlaying():Boolean
Hope you like it, let me know if you like to see extra/other related features.
Download: Chain (googlecode)
Updates
- Private functions are protected
- add-functions is now add(function, delay), where function is required.
- Class now extends EventDispatcher and play/playReversed dispatches Event.COMPLETE after playing sequence, instead of calling onComplete function
- Cleaned up code
Tagged with as3, chain, class, googlecode.

Easily create an image without taking care of loaders and URLRequest etc.
My ImageSaver() Class is ready for download.




















