package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.utils.getTimer;
public class ElasticRaceTrack extends Sprite
{
private var frame:uint = 1;
private var enterTime:Number = 0;
private var exitTime:Number = 0;
private var afterRenderTime:Number = 0;
public function ElasticRaceTrack()
{
trace("Constructor :: ", "start");
super();
stage.frameRate = 5;
addEventListener(Event.ENTER_FRAME, onEnterFrame);
addEventListener(Event.EXIT_FRAME, onExitFrame);
addEventListener(Event.RENDER, onRender);
trace("Constructor :: ", "end");
}
public function onEnterFrame(e:Event):void
{
afterRenderTime = getTimer();
trace(" :: ", "frame - " + frame + " | render duration - " + (afterRenderTime - exitTime) + " ms");
trace(" :: ", "frame - " + frame + " | total duration - " + (afterRenderTime - enterTime) + " ms");
trace(" :: ", "frame - " + frame + " | actualFrameRate: " + actualFrameRate.toPrecision(2) + " fps");
trace("\n\n"); trace("onEnterFrame :: ", "frame - " + ++frame);
enterTime = afterRenderTime
addCircles(1000);
stage.invalidate();
}
public function onExitFrame(e:Event):void
{
exitTime = getTimer();
trace("onExitFrame :: ", "frame - " + frame + " | execute duration - " + (exitTime - enterTime) + " ms");
}
public function onRender(e:Event):void
{
trace("onRender :: ", "frame - " + frame);
}
public function get actualFrameRate():Number
{
return 1000 / (afterRenderTime - enterTime)
}
public function runLongLoop(n:int):void
{
for (var i:int = 0; i < n; i++)
{
}
}
public function addCircles(n:int):void
{
for (var i:int = 0; i < n; i++)
{
var s:Sprite = new Sprite();
s.graphics.beginFill(0x0000FF, 0.2);
var sx:Number = Math.random() * 500;
var sy:Number = Math.random() * 500;
var sr:Number = Math.random() * 20;
s.graphics.drawCircle(sx, sy, sr);
addChild(s);
}
}
}
}