BIT-101 [2003-2017]

Spider Web


I was looking at a spider web the other day, and in typical Flash geek fashion, thought to myself, “I could do that in Flash!”

So I did.

Take that, spiders! A million years of evolution, and I can do it in 15 minutes – on the timeline no less!

[kml_flashembed movie=“https://www.bit-101.com/misc/web01.swf” width=“550″ height=“400″/]

Click to generate a web. Click again to generate a new one. No spiders required.

[as]var center:Point;
var radius:Number;
var increase:Number = 1;
var numSpokes:uint;
var spokes:Array;
var spokeIndex:uint;

stage.addEventListener(MouseEvent.CLICK, onClick);

function onClick(event:MouseEvent):void
{
center = new Point(mouseX, mouseY);
radius = 1;
numSpokes = Math.floor(Math.random() * 5 + 10);
spokes = new Array();
spokeIndex = 0;
graphics.clear();
graphics.lineStyle(0, 0xffffff, .3);
removeEventListener(Event.ENTER_FRAME, draw);
addEventListener(Event.ENTER_FRAME, drawSpokes);
}

function drawSpokes(event:Event):void
{
if(spokeIndex >= numSpokes)
{
removeEventListener(Event.ENTER_FRAME, drawSpokes);
addEventListener(Event.ENTER_FRAME, draw);
graphics.moveTo(center.x, center.y);
spokeIndex = 0;
}
else
{
var spoke:Number = Math.PI * 2 / numSpokes * spokeIndex + Math.random() * .4 – .2;
spokes.push(spoke);
graphics.moveTo(center.x, center.y);
graphics.lineTo(center.x + Math.cos(spoke) * 1000, center.y + Math.sin(spoke) * 1000);
spokeIndex++;
}
}

function draw(event:Event):void
{
var spoke:Number = spokes[spokeIndex];
var r:Number = radius + Math.random() * 8 – 4;
var xpos:Number = center.x + Math.cos(spoke) * r;
var ypos:Number = center.y + Math.sin(spoke) * r;
graphics.lineTo(xpos, ypos);
radius += increase;
spokeIndex++;
if(spokeIndex >= spokes.length) spokeIndex = 0;
if(radius > stage.stageWidth / 2)
{
removeEventListener(Event.ENTER_FRAME, draw);
}
}[/as]

« Previous Post
Next Post »