www.cristalab.com/tips/42078/crear-fractales-usando-la-clase-point-de-flash-8.html
lo único que no he conseguido limpiar los rayos (rayo.clear() -> que en AS3 sería con removeChild(rayo)), si a alguien se le ocurre alguna idea para no tener tantos rayos en pantalla a la vez, sea bienvenido...
Bueno, aquí va el código en AS3:
Código :
import flash.display.*;
import flash.geom.*;
import flash.filters.*;
var existe:Boolean=false;
var rayo:MovieClip=new MovieClip;
var BF:GlowFilter=new GlowFilter(0xaaaaff,.5,16,16,2,1);
addEventListener(Event.ENTER_FRAME, nrayo);
function nrayo(e:Event){
//trace("entramos en nrayo");
var A:Point=new Point(200,0);
var B:Point=new Point(mouseX, mouseY);
arco(A,B,2,.5);
}
function arco(A:Point, B:Point, anc:int, tz:Number){
//trace("entramos en arco");
var dl:Number= Point.distance(A,B)/2;
var ang:Number=Math.atan2(B.y-A.y,B.x-A.x)-.78;
var C:Point=Point.interpolate(A,B,.5).add(Point.polar(dl*tz*(2*Math.random()-1),ang));
rayo.graphics.lineStyle(anc, 0xc2c7fd,anc*50);
trace("dl="+dl);
if(dl>15){
arco(C,C.add(Point.polar(dl,ang+1.5*Math.random())),anc/1.9,tz);
}
if(dl>10){
arco(A,C,anc,tz);
arco(C,B,anc,tz);
}
else{
rayo.graphics.moveTo(A.x,A.y),
rayo.graphics.lineTo(C.x,C.y);
rayo.graphics.lineTo(B.x,B.y);
rayo.filters=[BF];
addChild(rayo);
}
}
Espero les sea de ayuda
Un saludo
