All pastes #395839 Raw Edit

Anonymous

public text v1 · immutable
·published 2007-03-15 10:03 UTC
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;
			
			}
		}