I made this a while ago, and I thought I might post it.
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Point;
var bmd:BitmapData=new BitmapData(800,800,false,0x6666ff);
var bm:Bitmap=new Bitmap(bmd);
bm.x=100;
bm.y=100;
this.addChild(bm);
var p:Point = new Point();
var fractals:Array = new Array(9);
fractals[0]={name:"Sierpinski Triangle",desc:"...",rules:new Array({a:.5,b:0,c:0,d:.5,e:0,f:0,p:1/3},{a:.5,b:0,c:0,d:.5,e:.25,f:.5,p:1/3},{a:.5,b:0,c:0,d:.5,e:.5,f:0,p:1/3})};
fractals[1]={name:"Sierpinski Carpet",desc:"...",rules:new Array({a:1/3,b:0,c:0,d:1/3,e:0,f:0,p:1/8},{a:1/3,b:0,c:0,d:1/3,e:1/3,f:0,p:1/8},{a:1/3,b:0,c:0,d:1/3,e:2/3,f:0,p:1/8},{a:1/3,b:0,c:0,d:1/3,e:0,f:1/3,p:1/8},{a:1/3,b:0,c:0,d:1/3,e:2/3,f:1/3,p:1/8},{a:1/3,b:0,c:0,d:1/3,e:0,f:2/3,p:1/8},{a:1/3,b:0,c:0,d:1/3,e:1/3,f:2/3,p:1/8},{a:1/3,b:0,c:0,d:1/3,e:2/3,f:2/3,p:1/8})};
fractals[2]={name:"Barnsley's fern",desc:"...",rules:new Array({a:0.00,b:0.00,c:0.00,d:0.16,e:0.00,f:0.00,p:.01},{a:0.85,b:0.04,c:-0.04,d:0.85,e:0.00,f:1.6,p:.85},{a:0.20,b:-0.26,c:0.23,d:0.22,e:0.00,f:1.6,p:.07},{a:-.15,b:0.28,c:0.26,d:0.24,e:0.00,f:0.44,p:.07})};
fractals[3]={name:"Cantor maze",desc:"...",rules:new Array({a:1/3,b:0,c:0,d:1/3,e:1/3,f:2/3,p:1/7},{a:0,b:1/3,c:1,d:0,e:2/3,f:0,p:3/7},{a:0,b:-1/3,c:1,d:0,e:1/3,f:0,p:3/7})};
fractals[4]={name:"5-sided crystal",desc:"...",rules:new Array({a:.382,b:0,c:0,d:.382,e:.3072,f:.6190,p:.2},{a:.382,b:0,c:0,d:.382,e:.6033,f:.4044,p:.2},{a:.382,b:0,c:0,d:.382,e:.0139,f:.4044,p:.2},{a:.382,b:0,c:0,d:.382,e:.1253,f:.0595,p:.2},{a:.382,b:0,c:0,d:.382,e:.4920,f:.0595,p:.2})};
fractals[5]={name:"Diagonal X",desc:"...",rules:new Array({a:1/3,b:0,c:0,d:1/3,e:0,f:0,p:1/5},{a:1/3,b:0,c:0,d:1/3,e:2/3,f:0,p:1/5},{a:1/3,b:0,c:0,d:1/3,e:0,f:2/3,p:1/5},{a:1/3,b:0,c:0,d:1/3,e:2/3,f:2/3,p:1/5},{a:1/3,b:0,c:0,d:1/3,e:1/3,f:1/3,p:1/5})};
fractals[6]={name:"Koch curve",desc:"...",rules:new Array({a:1/3,b:0,c:0,d:1/3,e:0,f:0,p:1/4},{a:1/6,b:-1/3.5,c:1/3.5,d:1/6,e:1/3,f:0,p:1/4},{a:1/6,b:1/3.5,c:-1/3.5,d:1/6,e:1/2,f:1/3.5,p:1/4},{a:1/3,b:0,c:0,d:1/3,e:2/3,f:0,p:1/4})};
fractals[7]={name:"Tree #1",desc:"...",rules:new Array({a:0,b:0,c:0,d:.5,e:0,f:0,p:.05},{a:.42,b:-.42,c:.42,d:.42,e:0,f:.2,p:.4},{a:.42,b:.42,c:-.42,d:.42,e:0,f:.2,p:.4},{a:.1,b:0,c:0,d:.1,e:0,f:.2,p:.15})};
fractals[8]={name:"Tree #2",desc:"...",rules:new Array({a:.195,b:-.488,c:.344,d:.443,e:.4431,f:.2452,p:.1699},{a:.462,b:.414,c:-.252,d:.361,e:.2511,f:.5692,p:.1811},{a:-.058,b:-.07,c:.453,d:-.111,e:.5976,f:.0969,p:.2161},{a:-.035,b:.07,c:-.469,d:-.022,e:.4884,f:.5069,p:.2198},{a:-.637,b:0,c:0,d:.501,e:.8562,f:.2513,p:.2131})};
var index:int=0;
btn_reset.addEventListener(MouseEvent.CLICK, reset);
btn_prev.addEventListener(MouseEvent.CLICK,prevfractal);
btn_next.addEventListener(MouseEvent.CLICK,nextfractal);
addEventListener(Event.ENTER_FRAME, ifs);
function prevfractal(event:MouseEvent):void {
index-=1;
if(index==-1)
index=8;
bmd.fillRect(bmd.rect,0x006666ff);
}
function nextfractal(event:MouseEvent):void {
index+=1;
if(index==9)
index=0;
bmd.fillRect(bmd.rect,0x006666ff);
}
function reset(event:Event):void {
bmd.fillRect(bmd.rect,0x6666ff);
}
function ifs(event:Event):void {
for (var j:Number = 0; j < 1000; j++) {
var rand:Number=Math.random();
for (var i:Number = 0; i < fractals[index].rules.length; i++) {
if (rand<fractals[index].rules[i].p) {
var rule:Object=fractals[index].rules[i];
break;
} else {
rand-=fractals[index].rules[i].p;
}
}
var newp:Point = new Point((rule.a*p.x)+(rule.b*p.y)+(rule.e),(rule.c*p.x)+(rule.d*p.y)+(rule.f));
bmd.setPixel(800*newp.x,800*(1-newp.y),0x443322);
p=newp;
}
}