import mx.utils.Delegate; class util.FPS { private static var instance:FPS; private var time:Number; private var counter:Number; private var interval:Number; private var dummy:MovieClip; public var onUpdate:Function; public function FPS(interval:Number) { var d:Number = _root.getNextHighestDepth(); this.dummy = _root.createEmptyMovieClip("fpsmc" + d, d); this.interval = interval; this.start(); } // reset and start measuring public function start() { counter = 0; time = getTimer(); dummy.onEnterFrame = Delegate.create(this, measure); } public function stop() { dummy.onEnterFrame = null; delete dummy.onEnterFrame; } // checks whether it should perform a measurement private function measure() { var now:Number = getTimer(); var lapsed:Number = now - time; if (lapsed >= interval) { onUpdate(counter * (1000 / lapsed)); time = now; counter = 0; } counter++; }}
import util.FPS; // create FPS meter and update every 500msvar fps:FPS = new FPS(500);fps.onUpdate = function(fps:Number) { trace(fps);}