I am having a memory problem. There seems to be something getting stuck in memory but i can figure out what it is. I am either begin left with around 100mb or 35mb in memory when the only thing left is a 500x500 bitmap. Any help would be great.
package
{
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Graphics;
import flash.display.GraphicsEndFill;
import flash.display.GraphicsPath;
import flash.display.GraphicsSolidFill;
import flash.display.GraphicsStroke;
import flash.display.IGraphicsData;
import flash.display.Shape;
import flash.display.Sprite;
import flash.events.Event;
import flash.sampler.getSize;
/**
* @author Ben Rubin
*/
public class Main extends Sprite
{
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private const steps:int = 18;
private var commands:Vector.<int>;
private var pathData:Vector.<Number>;
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
commands = new Vector.<int>();
pathData = new Vector.<Number>();
generateTree((Math.PI / 180 * 90), 256, 400, 100, 0);
drawTree(commands, pathData);
}
private function generateTree(angle:Number, x:Number, y:Number, length:Number, count:int):void {
if ( count < steps) {
var _length:Number = length * 0.8
var newX:Number = x - Math.cos(angle) * _length;
var newY:Number = y - Math.sin(angle) * _length;
pathData.push(x, y, newX, newY);
commands.push(1, 2);
generateTree(angle * 1.2, newX, newY, _length, count + 1);
generateTree(angle * 0.9, newX, newY, _length, count + 1);
}
}
private function drawTree(pathCommands:Vector.<int>, path:Vector.<Number>):void {
var graphicData:Vector.<IGraphicsData> = new Vector.<IGraphicsData>();
var shape:Shape = new Shape();
var stroke:GraphicsStroke = new GraphicsStroke(1);
stroke.fill = new GraphicsSolidFill(0x444444);
var pathway:GraphicsPath = new GraphicsPath(pathCommands, path);
var end:GraphicsEndFill = new GraphicsEndFill();
graphicData.push(stroke, pathway, end);
shape.graphics.drawGraphicsData(graphicData);
var bmd:BitmapData = new BitmapData(500, 500, false);
bmd.draw(shape);
stage.addChild(new Bitmap(bmd));
shape.graphics.clear();
shape = null;
graphicData = null;
stroke = null;
pathway = null;
pathCommands = null;
path = null;
commands = null;
pathData = null;
}
}
}