import flash.utils.Timer import flash.events.TimerEvent // Create an instance of a library bitmap // given the Class name of MyImage var imageData:Ball = new Ball(0, 0); var balls:Array=[]; var i:int=0; const NUM_BALLS=5000; var buffers:Array=[]; var buf=0; var loopCount:uint=0; buffers[0]=new Sprite(); buffers[1]=new Sprite(); var bf0:DisplayObject; var bf1:DisplayObject; function initBalls() { for(i=0; i < NUM_BALLS; i++) { balls[i]=new Bitmap(imageData); balls[i].x=Math.random()*stage.stageWidth; balls[i].y=Math.random()*stage.stageHeight; } //addEventListener("enterFrame", myLoop); } var dx:Number; function moveBalls() { for(i=0; i < NUM_BALLS; i++) { dx=Math.round(Math.random())==0?-1:1; balls[i].x+=dx; balls[i].y+=dx; } } function renderBalls(s:Sprite) { for(i=0; i < NUM_BALLS; i++) { s.addChildAt(balls[i],i); } } function drawBuffer() { buf_txt.text=buf; // remove these following lines so buffer = always 0 increases running time from 7.5 secs to 22 secs var btemp:DisplayObject=(buf==0)?bf0:bf1; var btemp2:DisplayObject=(buf==1)?bf0:bf1; btemp.visible=true; btemp2.visible=false; buf=(buf==0)?1:0; } function myLoop(e:Event) { moveBalls(); renderBalls(buffers[buf]); drawBuffer(); loopCount++; } bf0=addChild(buffers[0]); bf1=addChild(buffers[1]); bf1.visible=false; initBalls(); var startTime; var endTime; function myEnd(e:Event) { endTime=getTimer(); var tTime=endTime-startTime; trace("end: " + tTime + " ("+loopCount+")"); } var timer = new Timer(1000/60, 60) timer.addEventListener(TimerEvent.TIMER, myLoop) timer.addEventListener(TimerEvent.TIMER_COMPLETE,myEnd); startTime=getTimer(); timer.start() //addEventListener("enterFrame", myLoop);