Chaos Tree AceDecade forked:0favorite:6lines:131license : All rights reserved modified : 2010-01-13 14:13:07 Embed Tweet package{ import flash.display.Sprite; import flash.geom.Point; import flash.events.*; import flash.ui.Mouse; public class FlashTest extends Sprite { public var Branches:Array; public var angle:Number; public var shortRate:Number; public var wide:Number; public var max:Number; public var rmax:Array; public var rrate:Number; public var initLength:Number; public var color:uint; public var cvar:Array; public function FlashTest() { stage.addEventListener(MouseEvent.MOUSE_DOWN,mousedown); loadTree(1); drawTree(); } public function mousedown(e:MouseEvent):void{ drawTree(); } public function drawTree():void{ with(graphics){ clear(); lineStyle(wide,color,1); moveTo(stage.stageWidth/2,stage.stageHeight); lineTo(stage.stageWidth/2,stage.stageHeight-initLength); } Branches = new Array([new Point(stage.stageWidth/2,stage.stageHeight-initLength),initLength,-Math.PI/2,wide,color]); for(var i:int=0;i<max;i++){ drawBranches(); if(Branches.length == 0){ i = max; } } } public function drawBranches():void{ var A:Array = new Array(); for(var i:int=0;i<Branches.length;i++){ var r:int = Math.floor(Math.random()*rmax[0])+rmax[1]; var b:Array = Branches[i]; var X:Number = b[0].x; var Y:Number = b[0].y; var d:Number = b[1]; var w:Number = b[3]; var c:uint = b[4]; if(w > 0){ for(var k:int=0;k<3;k++){ var temp:uint = cvar[k]+((c>>16-8*k) & 0xff); if(temp < 255 && temp > 0){ c += (cvar[k]<<16-8*k) & 0xff; } } for(var j:int=0;j<r;j++){ var recursive:int = Math.floor(Math.random()*rrate); var a:Number = b[2]+Math.random()*angle-angle/2; var DX:Number = Math.cos(a)*d; var DY:Number = Math.sin(a)*d; if(recursive > 0){ d = d*shortRate; w -= 1; } with(graphics){ lineStyle(w,c,w/wide); moveTo(X,Y); lineTo(X+DX,Y+DY); } A.push([new Point(X+DX,Y+DY),d,a,w,c]); } } } Branches = A; } public function loadTree(n:int):void{ if(n == 0){ //stickler angle = Math.PI/4; shortRate = 0.7; wide = 8; max = 20; rmax = new Array(2,2); rrate = 4; initLength = stage.stageHeight/6; color = 0x333333; cvar = new Array(10,10,12); }else if(n == 1){ //hagbush angle = Math.PI*0.7; shortRate = 0.7; wide = 8; max = 20; rmax = new Array(2,2); rrate = 6; initLength = stage.stageHeight/6; color = 0x333333; cvar = new Array(10,10,12); }else if(n == 2){ //average angle = Math.PI/2; shortRate = 0.7; wide = 10; max = 20; rmax = new Array(2,2); rrate = 4; initLength = stage.stageHeight/5; color = 0x333333; cvar = new Array(10,10,12); }else if(n == 3){ //untitled angle = Math.PI/4; shortRate = 0.7; wide = 8; max = 20; rmax = new Array(2,2); rrate = 4; initLength = stage.stageHeight/6; color = 0x333333; cvar = new Array(10,10,12); }else if(n == 4){ //untitled angle = Math.PI/4; shortRate = 0.7; wide = 8; max = 20; rmax = new Array(2,2); rrate = 4; initLength = stage.stageHeight/6; color = 0x333333; cvar = new Array(10,10,12); } } } } Code Fullscreen Preview Fullscreen titou Indyaner2 tjoen xor Kirill.Rybin.. uwi Math.max graphics Math.PI Array Math.floor MouseEvent.MOUSE_DOWN length MouseEvent addEventListener push Point Math.cos Math.sin Math.random uint Sprite int Number