package src.utils { import flash.display.Sprite; import flash.events.Event; import flash.events.TimerEvent; import flash.system.System; import flash.text.TextField; import flash.text.TextFormat; import flash.utils.Timer; import flash.utils.getTimer; public class SWFSpecs extends Sprite { var memTF : TextField; var fpsTF : TextField; var mem : Number; var time : Number; var lastTime : Number; var frames : int; public function SWFSpecs(updateInterval : Number = 500, clr : Number = 0xCCCCCC) : void { mem = frames = time = 0; lastTime = getTimer(); graphics.lineStyle(0, clr); graphics.drawRect(0, 0, 90, 15); graphics.moveTo(35, 2); graphics.lineTo(35, 14); var memFormat : TextFormat = new TextFormat("Arial", 10); var fpsFormat : TextFormat = new TextFormat("Arial", 10); memFormat.align = "right"; memTF = new TextField(); fpsTF = new TextField(); memTF.defaultTextFormat = memFormat; fpsTF.defaultTextFormat = fpsFormat; memTF.textColor = memTF.borderColor = clr; fpsTF.textColor = fpsTF.borderColor = clr; memTF.x = -10; addChild(memTF); addChild(fpsTF); addEventListener(Event.ENTER_FRAME, updateSpecs); var timer = new Timer(updateInterval); timer.addEventListener(TimerEvent.TIMER, showSpecs); timer.start(); } private function updateSpecs(e : Event) : void { mem += System.totalMemory/(1024*1024); time += getTimer() - lastTime; lastTime = getTimer(); frames++; } private function showSpecs(e : TimerEvent) : void { fpsTF.text = int(1000/(time/frames)) + "fps"; memTF.text = (mem/frames).toFixed(2) + "Mb"; frames = mem = time = 0; } } }