www.pudn.com > photoFlow_AS3_001.rar > Effect.as
package com.flashloaded.as3.effects{
import flash.utils.*;
import flash.events.Event;
import flash.events.EventDispatcher;
import flash.display.Sprite;
import flash.display.DisplayObject;
import sandy.util.DistortImage;
import com.flashloaded.as3.Points;
import com.flashloaded.as3.Item;
import com.flashloaded.as3.CustomEvent;
import com.flashloaded.as3.Points;
import com.flashloaded.as3.tween.Easing;
public class Effect extends EventDispatcher{
protected var item:Item;
private var _distort:DistortImage;
private var intervalId:int;
protected var tpoints:Points;
protected var _points:Points;
private var easingTween:Easing;
private var motioning:Boolean;
public function Effect(_item:Item=null){
if(_item!=null){
item=_item;
}
easingTween=new Easing(speed);
easingTween.addEventListener(Event.COMPLETE,motionComplete);
}
public function init(d:Object,_item:Item):void{
item=_item;
}
protected function transformImage(endPoints:Points):void{
item.addChild(distort.image);
distort.setTransform(endPoints.toArray());
_points=endPoints;
}
protected function removeFromItem():void{
if(item.contains(distort.image))
item.removeChild(distort.image);
}
protected function transformMotionTo(points:Points):void{
if(!motioning){
transformMotion(this.points,points);
}else{
tpoints=points;
}
}
protected function transformMotion(startPoints:Points,endPoints:Points):void{
transformImage(startPoints);
tpoints=endPoints;
motioning=true;
distort.image.addEventListener(Event.ENTER_FRAME,motion);
}
protected function motion(e:Event=null):void{
transformImage(easingTween.getNextPoints(points,tpoints));
}
protected function motionComplete(e:Event):void{
motioning=false;
distort.image.removeEventListener(Event.ENTER_FRAME,motion);
}
/*protected function transformImage(image:DisplayObject,startPoints:Points,endPoints):void{
distord=new DistortImage(image);
item.addChild(distord.image);
distord.setTransform(startPoints.toArray());
tpoints=endPoints;
intervalId=setInterval(motion,speed);
}*/
public function get points():Points{
return _points;
}
public function get distort():DistortImage{
if(_distort==null){
_distort=new DistortImage(item.image);
}
return _distort;
}
public function set speed(num:Number):void{
easingTween.speed=num;
}
public function get speed():Number{
//override
return 0;
}
}
}