From 687dbe0216c40bc686b00ef6c716e36df8a8e10a Mon Sep 17 00:00:00 2001 From: Ray Greenwell Date: Tue, 20 Feb 2007 05:22:27 +0000 Subject: [PATCH] Simple frames-per-second displayer. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4585 542714f4-19e9-0310-aa3c-eee0fc999fb1 --- src/as/com/threerings/util/FPSDisplay.as | 48 ++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 src/as/com/threerings/util/FPSDisplay.as diff --git a/src/as/com/threerings/util/FPSDisplay.as b/src/as/com/threerings/util/FPSDisplay.as new file mode 100644 index 000000000..bec800c94 --- /dev/null +++ b/src/as/com/threerings/util/FPSDisplay.as @@ -0,0 +1,48 @@ +package com.threerings.util { + +import flash.events.Event; + +import flash.text.TextField; + +import flash.utils.getTimer; // function import + +public class FPSDisplay extends TextField +{ + public function FPSDisplay (framesToTrack :int = 150) + { + background = true; + text = String(Number.MIN_VALUE); + height = textHeight + 4; + + _framesToTrack = framesToTrack; + + addEventListener(Event.ENTER_FRAME, handleEnterFrame); + } + + protected function handleEnterFrame (event :Event) :void + { + var curStamp :Number = getTimer(); + _frameStamps.push(curStamp); + if (_frameStamps.length > _framesToTrack) { + _frameStamps.shift(); // forget the oldest timestamps + } + + var firstStamp :Number = Number(_frameStamps[0]); + var seconds :Number = (curStamp - firstStamp) / 1000; + // subtract one from the frames, since we're measuring the time + // elapsed over the frames (when there are two timestamps, that's + // the difference between 1 frame) + var frames :Number = _frameStamps.length - 1; + + if (frames > 0) { + this.text = String(frames / seconds); + } + } + + /** Timestamps of past ENTER_FRAME events. */ + protected var _frameStamps :Array = []; + + /** The number of running frames we track. */ + protected var _framesToTrack :int; +} +}