[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