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: fladdict challenge for amateurs

Every frame you get screen caputre of the stage.
* Generate new frame image with using last frames screen capture.
* This is a starting point of recursive generative art.
/**
 * Copyright hacker_tumkjqga ( http://wonderfl.net/user/hacker_tumkjqga )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/ia0b
 */

// forked from hanjuqu's forked from: fladdict challenge for amateurs
// forked from checkmate's fladdict challenge for amateurs

/**
 * Every frame you get screen caputre of the stage.
 * Generate new frame image with using last frames screen capture.
 * This is a starting point of recursive generative art.
 */
package
{
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.BlendMode;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.geom.ColorTransform;
	import flash.geom.Matrix;
	import flash.geom.Point;
	import flash.utils.getTimer;

	public class Beginner extends Sprite
	{
		/**
		 * Overwrite this update function.
		 * Every frame the function is invoked with two bitmaps.
		 * First one contains reference to the stage bitmap.
		 * Second one contains static copy of stage.
		 */
		 
		public var canvas:BitmapData;
		public var drawHere:BitmapData;
		public var mat:Matrix;

		public function update(): void
		{
			drawStep();
			renderStep();
			fadeStep();
		}

		public function drawStep(): void
		{
			drawHere.setPixel(Math.random() * 480, Math.random() * 480, 0xffffffff);
		}
	
		private var scale:Number;
		
		public function transformStep(): Matrix
		{
			mat = new Matrix();
			mat.translate(-240, -240);
			scale = Math.cos(Math.pow(getTimer(), 2) * Math.PI * 2 * .1);
			mat.scale(scale, scale);
			mat.rotate(Math.random() + .75);
			mat.translate(240, 240);
			return mat;
		}

		public function renderStep(): void
		{
			canvas.draw(drawHere, transformStep(), null, BlendMode.SCREEN);
			canvas.draw(drawHere, transformStep(), null, BlendMode.DIFFERENCE);
			canvas.draw(drawHere, transformStep(), null, BlendMode.ADD);
		}

		public function fadeStep(): void
		{
			canvas.colorTransform(drawHere.rect, new ColorTransform(Math.random() * 0.4 + 0.6, Math.random() * 0.4 + 0.6, Math.random() * 0.4 + 0.6, 1, 0, 0, 0, 0));
		}

		/**
		 * ---------------------------------------
		 * DO NOT CHANGE FOLLOWING CODES
		 * DO NOT ACCESS FOLLOWING PROPERTIES DIRECTLY
		 * ---------------------------------------
		*/
		
	   
		private var bitmap:Bitmap;
		
		
		public function Beginner() {
			canvas = new BitmapData(480,480,false,0x000000);
			bitmap = new Bitmap(canvas);
			addChild(bitmap);
			addEventListener(Event.ENTER_FRAME, _update);
		}
		
		public function _update(e:Event):void{
			if(drawHere)
				drawHere.dispose();
			drawHere = canvas.clone();
			update();
		}
	}
}