flash on 2010-5-15
♥0 |
Line 83 |
Modified 2010-05-17 14:44:37 |
MIT License
archived:2017-03-20 14:43:49
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;
}
}
}
}