In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

forked from: Colorful Spring Particle

/**
 * Copyright Patrick.Baleydier ( http://wonderfl.net/user/Patrick.Baleydier )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/oUl7
 */

package {
    import flash.display.Bitmap;
    import flash.display.BitmapData;
    import flash.display.BlendMode;
    import flash.display.GradientType;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.MouseEvent;
    import flash.filters.BlurFilter;
    import flash.geom.ColorTransform;
    import flash.geom.Matrix;

          [SWF(width="500", height="500", backgroundColor="0x000000")]
    public class Nuee extends Sprite {
        private var array:Array = [];
        private const N:int = 50, minDist:int = 75, springAmount:Number = 0.00075;
        private var canvas:Bitmap, bmpData:BitmapData, sp:Sprite, line:Sprite;
        private var tr:ColorTransform = new ColorTransform(1,1,1,0.85);
        private var flg:Boolean = true;
        private var colStack:Array = [0x587b7C, 0x719b9E, 0x9FC1BE, 0xE0D9BB, 0xDACB94, 0xCABA88, 0xDABD55, 0xC49F32, 0xA97409];
        private var blurValue : int =6;

        public function Nuee() {            
            graphics.beginFill(0);
            graphics.drawRect(0,0,stage.stageWidth,stage.stageHeight);
            graphics.endFill();
            sp = new Sprite();
            line = new Sprite();
            sp.addChild(line);
            for(var i:int = 0; i < N; i++){
                var ball:Ball = new Ball(Math.random() * 4 - 2, Math.random() * 4 - 2,5,colStack[i%colStack.length]);
                array.push(ball);
                ball.x = stage.stageWidth*Math.random();
                ball.y = stage.stageHeight*Math.random();
                sp.addChild(ball);
            }
            
            bmpData = new BitmapData(stage.stageWidth, stage.stageHeight, true, 0x004C6375);
            canvas = new Bitmap(bmpData);
            addChild(canvas);
            sp.visible = false;
            addEventListener(Event.ENTER_FRAME, onEnterFrame);
             stage.addEventListener(MouseEvent.CLICK, clickHandler);
             stage.addEventListener(MouseEvent.MOUSE_WHEEL, wheelHandler);
        }
        
        private function wheelHandler(event : MouseEvent) : void {        
            blurValue += event.delta; 
        }

        private function clickHandler(event : MouseEvent) : void {
              flg = !flg;
        }

        private function onEnterFrame(e:Event):void {
            
            bmpData.colorTransform(bmpData.rect, tr);
            bmpData.draw(sp);
            var len:uint = N;
            while(len--) {
                var ball:Ball = array[len];
                ball.x += ball.vx;
                ball.y += ball.vy;
                ball.alpha += (ball.toAlpha-ball.alpha)/4;
                ball.toAlpha = .5;
                if(ball.x < -20) ball.x = stage.stageWidth+20;
                else if(ball.x > stage.stageWidth+20) ball.x = -20;
                if(ball.y < -20) ball.y = stage.stageHeight+20;
                else if(ball.y > stage.stageHeight+20) ball.y = -20;
            }
            
            sp.graphics.clear();
            for(var i:int = 0; i < N - 1; i++){
                var partA:Ball = array[i];
                for(var j:uint = i + 1; j < N; j++){
                    var partB:Ball = array[j];
                    detect(partA, partB);
                }
            }
        }
         private function detect(b1:Ball, b2:Ball):void{
            var dx:Number = b2.x - b1.x;
            var dy:Number = b2.y - b1.y;
            var dist:Number = Math.sqrt(dx * dx + dy * dy);
            if(dist < minDist){

                //
                sp.graphics.lineStyle(1);
                var m:Matrix = new Matrix;
                m.createGradientBox(Math.abs(dx), Math.abs(dy), Math.atan2(dy,dx), Math.min(b1.x, b2.x), Math.min(b1.y, b2.y));
                sp.graphics.lineGradientStyle(GradientType.LINEAR, [b1.color, b2.color], [b1.alpha, b2.alpha],[0,255], m);
                sp.graphics.moveTo(b1.x, b1.y);
                sp.graphics.lineTo(b2.x, b2.y);
                if (flg==true)sp.filters = [new BlurFilter(blurValue,blurValue,1)];
                else sp.filters =[];
                sp.blendMode = BlendMode.HARDLIGHT;
                b1.toAlpha += 0.1;
                b2.toAlpha += 0.1;
                var ax:Number = dx * springAmount;
                var ay:Number = dy * springAmount;
                b1.vx += ax / b1.r;
                b1.vy += ay / b1.r;
                b2.vx -= ax / b2.r;
                b2.vy -= ay / b2.r;  
                }
            
         }    
    
    }
}

import flash.display.*;


class Ball extends Sprite {
    public var vx:Number, vy:Number, r:Number, toAlpha:Number, color:uint;
    
    public function Ball(vx:Number, vy:Number, r:Number, color:uint) {
        this.vx = vx; this.vy = vy; this.r = r; this.color = color;
        toAlpha = .5; 
        graphics.beginFill(color);
        graphics.drawCircle(0, 0, r);
       
        blendMode = BlendMode.ADD;
    }
}