summaryrefslogtreecommitdiff
path: root/bPod/com/player/Visuals.as
blob: 2a4ac7bc6124d2ecc866ecfb166028ff27b97c4a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
class com.player.Visuals extends MovieClip {

//	private var theRoot:MovieClip;
	private var numParticles:Number = 10;
	private var minDist:Number = 50;
	private var springAmount:Number = .001;
	
	private var vbounds:MovieClip;
	
	public function Visuals() {}

	public function init():Void
	{
		setMask (vbounds);

		for(var i:Number=0;	i< numParticles;i++) {
			var particle:MovieClip = this.attachMovie("particle", "p" + i, i);
			particle._x = Math.random() * vbounds._width;
			particle._y = Math.random() * vbounds._height;
			particle.vx = Math.random() * 6 - 3;
			particle.vy = Math.random() * 6 - 3;
			particle._xscale = particle._yscale = 10 + Math.random() * 100;
			particle.mass = particle._xscale / 100;
		}

//		onEnterFrame	=	initAnimation;


	}

	private function onEnterFrame():Void
	{
		for(var i:Number = 0;i<numParticles;i++)
		{
			var particle:MovieClip = this["p" + i];
			particle._x += particle.vx;
			particle._y += particle.vy;
			if(particle._x > vbounds._width) {
				particle._x = vbounds._x;
			}
			else if(particle._x < -10) {
				particle._x = vbounds._width;
			}
			if(particle._y > vbounds._height) {
				particle._y = vbounds._y;
			}
			else if(particle._y < -46) {
				particle._y = vbounds._height;
			}
		}

		clear();
		for(i=0;i<numParticles-1;i++)
		{
			var partA:MovieClip = this["p" + i];
			for(var j:Number = i+1;j<numParticles;j++) {
				var partB:MovieClip = this["p" + j];
				spring(partA, partB);
			}
		}
	}

	function spring(partA:MovieClip, partB:MovieClip):Void
	{
		var dx:Number = partB._x - partA._x;
		var dy:Number = partB._y - partA._y;
		var dist:Number = Math.sqrt(dx*dx + dy*dy);
		if(dist < minDist)
		{
			lineStyle(1, 0xffffff, 100 - dist / minDist * 100);
			moveTo(partA._x, partA._y);
			lineTo(partB._x, partB._y);
			var ax:Number = dx * springAmount;
			var ay:Number = dy * springAmount;
			partA.vx += ax / partA.mass;
			partA.vy += ay / partA.mass;
			partB.vx -= ax / partB.mass;
			partB.vy -= ay / partB.mass;
		}
	}


};