Any way to speed this up?

:cons: Hello people!

I was wondering if there is anyway to speed the rendering of this little app that I made.
It basically consist on attaching sprites on golden section based paths.

I’m quite new to AS3 and really looking forward to see its potentials.
I tried to boost the framerate to 300 seeing results in the beginning when I just had a couple of variables but now it seems it has slowed down.

anyway here’s the code of the fla:



StageScaleMode.NO_SCALE;
import fl.events.SliderEvent;
stage.frameRate = 300;
/*
* Constants
*/
var leafNumber:Number = 3000;
var g:Number = 1.618033989;
var rad:Number = 20;

//mask the viewer
var myMask:DrawMask = new DrawMask(-150,-150,300,300,viewer);

/*
* Variables
*/

//User Defined
var rGrowth:Number = 1.002;
var degeneration:Number = .001;
var growthX:Number = .5;
var growthY:Number = .5;

//Already defined :)
var mrGrowth:Number = 1.009;
var mgrowthX:Number = 1;
var mgrowthY:Number = 1;
var mdegeneration:Number = .009;
var ga:Number = 360 - (360/g);
var leafx:Number = 0;
var leafy:Number = 0;
var rot:Number = 0;
var leafAlpha:Number = 0;
var curIter:Number = leafNumber;

//
var sliders:Array = [SrGrowth, Sdegeneration, SgrowthX, SgrowthY];
var maxValues:Array = [mrGrowth, mdegeneration, mgrowthX, mgrowthY];
var values:Array = [rGrowth, degeneration, growthX, growthY];

//Setting sliders value according to predefined values stored in the array
for  (var i=0; i<values.length; i++) {
	var s:Slider = new Slider();
	sliders*.minimum = values*;
	sliders*.value = values*;
	sliders*.maximum = maxValues*;
	sliders*.tickInterval = (sliders*.maximum-sliders*.value)/10;
	sliders*.snapInterval = sliders*.tickInterval;
	sliders*.addEventListener(SliderEvent.THUMB_RELEASE, sliderChange);
}

//Listeners
generate.addEventListener(MouseEvent.CLICK, startIt);
stopBtn.addEventListener(MouseEvent.CLICK, stopIt);
clearBtn.addEventListener(MouseEvent.CLICK, resetIt);

/*
* Handlers for events
*/
function sliderChange(event:SliderEvent) {
	var i:Number=0;
	for each (var s:Slider in sliders) {
		values* =  s.value;
		i++;
	}
}

function startIt(event:Event) {
	trace("startDrawing");
	addEventListener(Event.ENTER_FRAME, drawLeaves);
}

function resetIt(event:Event) {
	rGrowth = 1.009;
	growthX = .5;
	growthY = .5;
	degeneration = .009;
	ga= 360 - (360/g);
	rad=20;
	rot=0;
	leafx=0;
	leafy=0;
	leafAlpha = curIter/leafNumber;
		
	removeEventListener(Event.ENTER_FRAME, drawLeaves);
	var children:int = viewer.numChildren;
	while (children-- > 1) {
		viewer.removeChildAt(children);
	}
}

function stopIt(event:Event) {
	removeEventListener(Event.ENTER_FRAME, drawLeaves);
}

/*
* rolling drums for ....Main Function !
*/

function drawLeaves(event:Event) {
	// if you have still iteration to do
	if (curIter) {
		curIter--;
		// augment the rotation by a goldan angle minus the degeneration variable
		ga-=values[1];
		rot +=ga;
		//augment the radius by rGrowth
		rad = rad *values[0];
		//make sure it is rotating by a valid angle
		rot -= int(rot/360)*360;
		//adjust the alpha
		leafAlpha = curIter/leafNumber;
		//set coordinates for the "leaf"
		leafx = Math.cos((Math.PI/180)*rot)*rad;
		leafy =  Math.sin((Math.PI/180)*rot)*rad;
		// draw the leaf
		var leaf:DrawLeaf = new DrawLeaf(leafx, leafy, 10*values[2], 10*values[3], rot, leafAlpha);
		//add it to the viewer
		viewer.addChild(leaf);
	} else {
		event.target.removeListener;
	}
}

and here the one for the main class:


package {
	import flash.display.Sprite;
	import flash.display.Shape;

// draw the leaf [TODO] extends the types of leaves

	public class DrawLeaf extends Sprite {
		/*
		* Constructor
		*/
		public function DrawLeaf(x:Number, y:Number, width:Number, height:Number, rotation:Number, alpha:Number) {
			var myShape:Shape = new Shape();
			myShape.graphics.beginFill(0x000000, alpha);
			myShape.graphics.drawEllipse(x, y, width, height);
			myShape.rotation = rotation;
			addChild(myShape);
			this.alpha = alpha;
		}
	}
}

thaaanks!