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: Mycelium

click to load custom image ;)
inspired by http://onecm.com/projects/mycelium/
Get Adobe Flash player
by zotin95 25 Mar 2010
/**
 * Copyright zotin95 ( http://wonderfl.net/user/zotin95 )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/drOG
 */

// forked from makc3d's Mycelium
// click to load custom image ;)
// inspired by http://onecm.com/projects/mycelium/
package {

	import flash.display.*;
	import flash.events.*;
	import flash.net.FileReference;
	import flash.net.URLRequest;
	import flash.system.LoaderContext;


	[SWF(width=465, height=465)]

       public class FunctionUse extends MovieClip {
		private var canvas:BitmapData;
		private var walkerNum:int;
		private var walkers:Vector.<Function>;

		private var loader:Loader;
		private var file:FileReference;

               public function FunctionUse(){
                  // init
				  loader = new Loader;
				  loader.contentLoaderInfo.addEventListener (Event.COMPLETE, init);
				  loader.load (new URLRequest ("http://a1.twimg.com/profile_images/423176540/head.jpg"),
					new LoaderContext (true));
			   }

		public function init (e:Event):void {
			if (canvas == null) {
			canvas = new BitmapData(465,465,false, 0x000000);
			addChild(new Bitmap(canvas,"auto",true));
			 
			
			walkerNum = 50000;
			walkers = new Vector.<Function>(walkerNum, true);
			runWalkers();
			} else {
				canvas.fillRect (canvas.rect, 0);
			}	
			makeWalkers();

               }
               // private methods

		private function makeWalkers():void{
			var bd:BitmapData = loader.content["bitmapData"];
			for (var i:int = 0; i < walkerNum; i++) {
				var ix:int = 465 * Math.random ();
				var iy:int = 465 * Math.random ();
				walkers[i] = makeWalker(ix, iy,
					((0xFFFFFF - bd.getPixel (
						ix * bd.width / 465.0,
						iy * bd.height / 465.0)
					& 0xFF00)) >> 10);
			}
		}
		private function runWalkers():void{
			addEventListener(Event.ENTER_FRAME, onRun);
			file = new FileReference;
			file.addEventListener (Event.SELECT, onFileSelected);
			file.addEventListener (Event.COMPLETE, onFileLoaded);
			stage.addEventListener (MouseEvent.CLICK, loadUserImage);
		}

		private function loadUserImage (e:MouseEvent):void { file.browse (); }
		private function onFileSelected (e:Event):void { file.load (); }
		private function onFileLoaded (e:Event):void { loader.loadBytes (file.data); }
		private function onImageReady (e:Event):void {
		}
		private function onRun(evt:Event):void {
			canvas.lock ();
			for (var i:int = 0; i<walkerNum; i++){
				walkers[i]();
			}
			canvas.unlock ();
		}
		private function makeWalker(xp:Number=200, yp:Number=200, dieAt:int=64):Function{
			var age:int = dieAt;
			var x:Number = xp, y:Number = yp;
			var rad:Number = Math.random();
			var theta:Number = Math.random() * Math.PI * 2;
			var speed:Number = 0.01 * Math.random() * 2;
			if (int(Math.random() * 2) == 1){
				speed *= -1;
			}
			function calc(c:uint, ratio:Number) : uint {
				return (c > 127 ? 127 : c*ratio);
			}
			return function():void{
				if (age --< 1) return;
				x += rad * Math.cos(theta);
				y += rad * Math.sin(theta);
				theta += speed
				if (int(Math.random() * 100) == 1){
					theta = Math.random() * Math.PI * 2;
				}
				if (!(x > 465 || x < 0 || y > 465 || y < 0)){
					var col : uint = (calc(3, age) << 16) | (calc(3, age) << 8) | calc(3,age);
					canvas.setPixel(x, y, col + canvas.getPixel(x, y) >> 5);
				}
			}
		}
		

       }

}