forked from: Glitch 2

by moonthug forked from Glitch 2 (diff: 1)
♥0 | Line 51 | Modified 2011-02-22 21:01:57 | MIT License
play

ActionScript3 source code

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

// forked from Ctrl's Glitch 2
/*
Glitch 2
By Ctrl
*/
package 
{
	import flash.display.Sprite;
	import flash.display.Loader;
	import flash.events.*;
	import flash.events.MouseEvent;
	import flash.net.URLRequest;
	import flash.net.URLLoader;
	import flash.utils.ByteArray;
	import flash.utils.Timer;

	[SWF(backgroundColor="#000", frameRate="10")]
	
	public class Glitch extends Sprite 
	{

		private const HEADER:int = 4444;

		private var data:ByteArray;
		private var origin:ByteArray;
		private var display:Loader;

		public function Glitch() 
		{
			stage.align = "TL";
			stage.scaleMode = "noScale";
 
			var loader:URLLoader = new URLLoader();
			loader.dataFormat = "binary";
			loader.addEventListener(Event.COMPLETE, onComplete);
			loader.load(new URLRequest("http://2.bp.blogspot.com/_McL0_OWcuUs/SxgL5FbzJlI/AAAAAAAAAFw/oGFmUWu7g9o/s400/pulp-32-565x581.jpg"));
		       
		       display = new Loader();
			addChild(display);
			display.scaleX = 1.2;
			display.scaleY = 1.2;
			
		       var time:Timer = new Timer(500);
		       time.addEventListener(TimerEvent.TIMER, reset);
		       time.start();
		}

		private function onComplete(e:Event):void {
			origin = e.target.data;
			data = new ByteArray();
			data.writeBytes(origin)
			addEventListener(Event.ENTER_FRAME, loop);
			stage.addEventListener(MouseEvent.MOUSE_DOWN, reset);
		}
  
		private function loop(e:Event):void {
			data.position = Math.floor((data.length - HEADER) * Math.random()) + HEADER;
			data.writeByte(0);
			display.loadBytes(data);
		}

		private function reset(e:Event):void {
			data.clear();
			data.writeBytes(origin);
		}
	}
}