www.pudn.com > photoFlow_AS3_001.rar > Zoom.as


 
package com.flashloaded.as3.effects{ 
	 
	import com.flashloaded.as3.Page; 
	import flash.events.Event; 
	import com.flashloaded.as3.effects.IEffect; 
	import com.flashloaded.as3.effects.AbstractEffect; 
	import com.flashloaded.as3.CustomEvent; 
	import flash.filters.BlurFilter; 
	import flash.display.Sprite; 
	import com.flashloaded.as3.SelectionSystem; 
	 
	public class Zoom extends AbstractEffect implements IEffect{ 
		 
		//private var page:Page; 
		public var strength:Number=0.3; 
		private var sys:SelectionSystem; 
		private var tsx:Number=1.2; 
		private var tsy:Number=1.2; 
		private var zoomed:Boolean; 
		 
		public function Zoom(sys:SelectionSystem=null){ 
			this.sys=sys; 
		} 
		 
		override public function init(s:Object):void{ 
			strength=Number(s); 
			 
		} 
		 
		override public function animate():void{ 
			//page.addEventListener(Event.ENTER_FRAME,onMotion); 
		} 
		 
		 
		 
		override public function closePage(page:Page):void{ 
			 
				 
				this.page=page; 
				 
				page.removeEventListener(Event.ENTER_FRAME,onZoom); 
				page.addEventListener(Event.ENTER_FRAME,onZoomOut); 
			 
		} 
		 
		override public function openPage(page:Page=null):void{ 
			 
			this.page=page; 
			 
			page.removeEventListener(Event.ENTER_FRAME,onZoomOut); 
			page.addEventListener(Event.ENTER_FRAME,onZoom); 
			 
		} 
		 
		private function onZoom(evt:Event):void{ 
			 
			 
			page.scaleX+=(tsx-page.scaleX)*strength; 
			page.scaleY+=(tsy-page.scaleY)*strength; 
			 
			if(Math.abs(page.scaleX-tsx)<0.01){ 
				page.scaleX=page.scaleY=tsx; 
				page.removeEventListener(Event.ENTER_FRAME,onZoom); 
			} 
			 
			centerize(); 
			 
		} 
		private function onZoomOut(evt:Event):void{ 
			 
			page.scaleX+=(1-page.scaleX)*strength; 
			page.scaleY+=(1-page.scaleY)*strength; 
			 
			if(Math.abs(page.scaleX-1)<0.01){ 
				page.scaleX=page.scaleY=1; 
				page.removeEventListener(Event.ENTER_FRAME,onZoomOut); 
			} 
			 
			centerize(); 
		} 
		private function centerize():void{ 
			page.x=sys.compWidth/2-page.width/2; 
			page.y=sys.compHeight/2-page.height/2; 
		} 
		 
	} 
}