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: Interactive blobs

// forked from mrdoob's Interactive blobs
package
{
	import flash.display.Sprite;
	import flash.display.MovieClip;
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.filters.BlurFilter;
	import flash.events.Event;
	import flash.geom.Rectangle;
	import flash.geom.Point;

	[SWF( backgroundColor='0x000000', frameRate='30', width='800', height='600')]
	
	public class blobsInteractive extends Sprite
	{
		private var bl	:Array;
		private var r	:Bitmap;
		private var c	:Sprite;
		private var b	:Sprite;
		private var s	:Number = 0;
		private var p	:Number = .9;
		
		public function blobsInteractive()
		{
			stage.align = "TL";
			stage.scaleMode = "noScale";

			bl = new Array();

			b = new Sprite();
			b.graphics.beginFill(0x000000,1);
			b.graphics.lineTo(stage.stageWidth,0);
			b.graphics.lineTo(stage.stageWidth,stage.stageHeight);
			b.graphics.lineTo(0,stage.stageHeight);
			b.graphics.lineTo(0,0);
			b.graphics.endFill();
			addChild(b);

			c = new Sprite();
			c.filters = [new BlurFilter(20,20,2)];
			addChild(c);

			r = new Bitmap( new BitmapData( stage.stageWidth, stage.stageHeight, false, 0x00000000 ) );
			addChild(r);

			buttonMode = true;
			addEventListener( "enterFrame", u );
			addEventListener( "mouseUp", mu );
			addEventListener( "mouseDown", md );
		}

		private function u(e:Event):void
		{
			for (var i:Number = 0; i < 50; i ++)
			{
				if (!bl[i])
				{
					bl[i] = new MovieClip();
					bl[i].graphics.beginFill( Math.random()*0xFFFFFF,1);
					bl[i].graphics.drawCircle(0,0,Math.random()*40+20);
					
					bl[i].x = stage.stageWidth*.5 + Math.random()*1000-500;
					bl[i].y = stage.stageHeight*.5 + Math.random()*1000-500;
					bl[i].xspeed = bl[i].yspeed = 0;
					bl[i].cycle = Math.random() * .01 + .0005;
					bl[i].offsetx = Math.random() * 200-100;
					bl[i].offsety = Math.random() * 200-100;
                                        bl[i].blendMode = "add";
					c.addChild(bl[i]);
				}
				
				bl[i].x += bl[i].xspeed = (( mouseX - bl[i].x + bl[i].offsetx) * bl[i].cycle ) + ( bl[i].xspeed * p);
				bl[i].y += bl[i].yspeed = (( mouseY - bl[i].y + bl[i].offsety) * bl[i].cycle ) + ( bl[i].yspeed * p);
			}
			r.bitmapData.fillRect(new Rectangle(0,0,stage.stageWidth, stage.stageHeight),0x00000000);
			r.bitmapData.draw(c);
			r.bitmapData.threshold(r.bitmapData,new Rectangle(0,0,stage.stageWidth, stage.stageHeight),new Point(0,0),">",0x00101010,0xFFFFFFFF,0x00808080,true);
		}

		private function md(e:Event):void
		{
			for (var i:Number = 0; i < 200; i ++)
			{
				bl[i].offsetx = Math.random()*1000-500;
				bl[i].offsety = Math.random()*1000-500;
			}
		}

		private function mu(e:Event):void
		{
			for (var i:Number = 0; i < 200; i ++)
			{
				bl[i].offsetx = Math.random()*200-100;
				bl[i].offsety = Math.random()*200-100;
			}
		}
	}
}