summaryrefslogtreecommitdiff
path: root/bPod/com/player/Visuals.as
diff options
context:
space:
mode:
Diffstat (limited to 'bPod/com/player/Visuals.as')
-rw-r--r--bPod/com/player/Visuals.as85
1 files changed, 85 insertions, 0 deletions
diff --git a/bPod/com/player/Visuals.as b/bPod/com/player/Visuals.as
new file mode 100644
index 0000000..2a4ac7b
--- /dev/null
+++ b/bPod/com/player/Visuals.as
@@ -0,0 +1,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;
+ }
+ }
+
+
+}; \ No newline at end of file