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

Get Adobe Flash player
by Dan0 01 May 2010
// forked from bdk's forked from: 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='0xFFFFFF', frameRate='50', 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 = .95;
		
		public function blobsInteractive()
		{
			stage.align = "TL";
			stage.scaleMode = "noScale";

			bl = new Array();

			b = new Sprite();
			b.graphics.beginFill(0xFFFFFF,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, 0x00FFFFFF ) );
			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 < 200; i ++)
			{
				if (!bl[i])
				{
					bl[i] = new MovieClip();
					var cc:Number = Math.floor(Math.random() * 5);
					var ccc:Number;
					switch (cc)
					{
						case 0: ccc = 0xF7004A; break;
						case 1: ccc = 0x7FF700; break;
						case 2: ccc = 0x04AFF7; break;
						case 3: ccc = 0x7004AF; break;
						case 4: ccc = 0xFF7004; break;
					}
					
					
					bl[i].graphics.beginFill(ccc,1);
					bl[i].graphics.drawCircle(0,0,Math.random()*50+5);
					
					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;
					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), 0x00FFFFFF);
			
			r.bitmapData.draw(c);
			
			r.bitmapData.threshold(r.bitmapData,
			new Rectangle(0, 0, stage.stageWidth, stage.stageHeight),
			new Point(0, 0),
			"<",
			0xf0f,0xffffffff,0x8ff,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;
			}
		}
	}
}