rendered paste body private function update(event:Event)
{
for (i in limbs)
{
var dx = 0;
var dy = 0;
for (j in limbs)
{
if (i == j)
continue;
var vx = limbs[i].x - limbs[j].x;
var vy = limbs[i].y - limbs[j].y;
var len = vx * vx + vy * vy;
try
{
if (links[i][j] > 0)
{
var nlen:Number = Math.sqrt(len);
nlen = (nlen == 0) ? .0001 : nlen;
var f = (connectors[(links[i][j] - 1)].len - nlen) / (nlen * 3);
var ndx = f * vx;
var ndy = f * vy;
limbs[i].dx += ndx;
limbs[i].dy += ndy;
limbs[j].dx -= ndx;
limbs[j].dy -= ndy;
connectors[(links[i][j] - 1)].graphics.clear();
connectors[(links[i][j] - 1)].graphics.lineStyle(1, 0xFFFFFF, 100);
connectors[(links[i][j] - 1)].graphics.moveTo(limbs[j].x, limbs[j].y);
connectors[(links[i][j] - 1)].graphics.lineTo(limbs[i].x, limbs[i].y);
}
}
catch(e:*) {}
if (len == 0)
{
dx += Math.random();
dy += Math.random();
}
else if (len < 10000)
{
dx += vx / len;
dy += vy / len;
}
}
var dlen = dx * dx + dy * dy;
if (dlen > 0)
{
dlen = Math.sqrt(dlen) / 2;
limbs[i].dx += dx / dlen;
limbs[i].dy += dy / dlen;
}
var movx = Math.max(-5, Math.min(5, limbs[i].dx));
var movy = Math.max(-5, Math.min(5, limbs[i].dy));
if(Math.abs(movx) > 1)
limbs[i].x += movx;
if(Math.abs(movy) > 1)
limbs[i].y += movy;
if (limbs[i].x < 0)
{
limbs[i].x = 0;
}
else if (limbs[i].x > stage.stageWidth)
{
limbs[i].x = stage.stageWidth;
}
if (limbs[i].y < 0)
{
limbs[i].y = 0;
}
else if (limbs[i].y > stage.stageHeight)
{
limbs[i].y = stage.stageHeight;
}
limbs[i].dx /= 2;
limbs[i].dy /= 2;
}
}