/* Copyright (c) 2007, George Wang, neatfilm.com All rights reserved. Release under BSD License. */ // Usage: new ImageTransition( holder, url 1, url 2, [caller, callback]); // load first image, then run caller.callback(), continue to load next image and easing out. // set callback function as public // Created: George Wang, 8 Jan 2007. package com.neatfilm.display { import flash.display.Sprite; import flash.display.DisplayObject; import flash.display.Bitmap; import flash.events.Event; import com.neatfilm.display.ImageLoader; public class ImageTransition { private var target:DisplayObject; private var url_1:String; private var url_2:String; private var caller:*; private var callback:String; private var image:Sprite; private var easing:Number; private var alpha:Number; public function ImageTransition(target:*,url_1:String,url_2:String,caller:*=undefined,callback:String=null) { this.target = target; this.url_1 = url_1; this.url_2 = url_2; this.caller = caller; this.callback = callback; this.easing = 0.1; this.alpha = 1; init(); } private function init():void { var img:ImageLoader = new ImageLoader(this.target, this.url_1, this, 'loadSecond'); } public function loadSecond(img:Bitmap):void { if(Boolean(this.caller)) this.caller[this.callback](); this.image = new Sprite(); this.target.addChild(this.image); this.image.alpha = 0; var imgNext:ImageLoader = new ImageLoader(this.image,this.url_2,this,'transition'); } public function transition(img:Bitmap):void { this.image.addEventListener(Event.ENTER_FRAME,motion); } private function motion(e:Event):void { var d:Number = this.alpha - this.image.alpha; if(Math.abs(d)<0.1) { this.image.alpha = this.alpha; this.image.removeEventListener(Event.ENTER_FRAME,motion); } else { var va:Number = d* this.easing; this.image.alpha += va; } } } }