flash on 2010-5-15

by deform
♥0 | Line 83 | Modified 2010-05-17 14:44:37 | MIT License
play

Related images

ActionScript3 source code

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

package {
	import flash.events.Event;
	import flash.geom.Matrix;
	import flash.display.DisplayObject;
	import flash.display.BitmapData;
	import flash.display.Bitmap;
    import flash.display.Sprite;
    import flash.display.Loader;
    import flash.net.URLRequest;
    import flash.events.IOErrorEvent;
    import flash.events.ProgressEvent;
    import flash.text.TextField;
    import flash.system.LoaderContext;
    public class FlashTest extends Sprite {
        private var tf:TextField = new TextField();
        private var targetImg:DisplayObject;
		private var bitmaps:Array;
		private var baseBmd:BitmapData;
		private var t:Number = 0;
        	private var url:String = "http://wonderfl.net/static/tmp/related_images/f0839348ffb2a5a1dcabc627afb408120345b296m";

        public function FlashTest() {
            // write as3 code here..
            imageLoader();
        }
        
        private function imageLoader():void
        {
			addChild(tf);
			
			var context:LoaderContext = new LoaderContext(true);
			var loader:Loader = new Loader();
			loader.load(new URLRequest(url), context);
			loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, imgProgressHandler);
			loader.contentLoaderInfo.addEventListener(Event.COMPLETE, imgLoadedHandler);
			loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, imgErrorHandler);
			
			function imgProgressHandler(e:ProgressEvent):void
			{
				tf.text = e.bytesLoaded+" / "+e.bytesTotal;
			}
			function imgLoadedHandler(e:Event):void
			{
				loader.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS, imgProgressHandler);
				loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, imgLoadedHandler);
				loader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, imgErrorHandler);
				tf.text = "image loaded";
				Initialize(loader);
			}
			function imgErrorHandler(e:IOErrorEvent):void
			{
				trace(e);
			}
        }
		
		private function Initialize(target:DisplayObject):void
		{
			targetImg = target;
			bitmaps = [];
			//initialize
			if(targetImg.width > stage.stageWidth || targetImg.height > stage.stageHeight)
			{
				var ratio:Number = targetImg.width / targetImg.height;
				targetImg.width = int(targetImg.width * ratio);
				targetImg.height = int(targetImg.height * ratio);
			}
			for(var i:int = 0; i < targetImg.height; i++)
			{
				baseBmd = new BitmapData(targetImg.width, 1, true, 0x00ffffff);
				baseBmd.draw(targetImg, new Matrix(1, 0, 0, 1, 0, -i));
				bitmaps[i] = new Bitmap(baseBmd, "auto", true);
				bitmaps[i].x = stage.stageWidth / 2 - targetImg.width / 2;
				bitmaps[i].y = stage.stageHeight / 2 - targetImg.height/2 + i;
				addChild(bitmaps[i]);
			}
			tf.text = new String(bitmaps.length);
			
			addEventListener(Event.ENTER_FRAME, loopHandler);
		}
		
		private function loopHandler(e:Event):void
		{
			t += 2;
			for(var i:uint=0; i < bitmaps.length; i++)
			{
				bitmaps[i].scaleX = Math.cos((t - i) * Math.PI / targetImg.height);
				(Math.cos((t - i) * Math.PI / targetImg.height) > 0) ? bitmaps[i].x = stage.stageWidth / 2 - bitmaps[i].width / 2:
																	 bitmaps[i].x = stage.stageWidth / 2 + bitmaps[i].width / 2;
			}
		}
    }
}