[Tweener] Timer based Tweener
Kevin Newman
CaptainN at unFocus.com
Thu Dec 3 11:19:33 PST 2009
I'm doing a project now that has to load old 12 FPS movies and wanted my
Tweener based widget interaction to be smoother than 12 FPS is capable
of. So I hacked Tweener to add Timer/updateAfterEvent support.
This is hacky and unfinished, but it does show how this could work. Is
there any interest in adding something like this to the core, or as a
special property or something?
Here is the modified code, if you are interested:
/**
* Starts the Tweener class engine. It is supposed to be running every
time a tween exists.
*/
private static function startEngine():void {
_engineExists = true;
_tweenList = new Array();
__tweener_controller__ = new MovieClip();
__tweener_controller__.addEventListener(Event.ENTER_FRAME,
Tweener.onEnterFrame);
// Added Timer stuff
__timer = new Timer(1000 / 30);
__timer.addEventListener(TimerEvent.TIMER, onTimer);
__timer.start();
_currentTimeFrame = 0;
updateTime();
}
/**
* Implements a Timer updater to enable updates faster than the
document framerate.
*/
static var __timer:Timer;
static function onTimer(evt:TimerEvent):void {
__tweener_controller__.dispatchEvent(new Event(Event.ENTER_FRAME));
evt.updateAfterEvent();
}
/**
* Stops the Tweener class engine.
*/
private static function stopEngine():void {
_engineExists = false;
_tweenList = null;
_currentTime = 0;
_currentTimeFrame = 0;
__tweener_controller__.removeEventListener(Event.ENTER_FRAME,
Tweener.onEnterFrame);
__tweener_controller__ = null;
// Added Timer stuff
__timer.stop();
__timer.removeEventListener(TimerEvent.TIMER, onTimer);
__timer = null;
}
This is far from polished, but shows how this can work. If you were to
run this in a project set to 1 FPS, you'd still get 30 FPS updates on
Tweener based Tweens.
Kevin N.
More information about the Tweener
mailing list