diff options
Diffstat (limited to 'bPod/com/player/Visuals.as')
| -rw-r--r-- | bPod/com/player/Visuals.as | 85 |
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 |
