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


package com.flashloaded.as3{ 
	import flash.display.MovieClip; 
	import com.flashloaded.as3.SelectionSystem; 
	import com.flashloaded.as3.PhotoCollection; 
	import com.flashloaded.as3.Photo; 
	import com.flashloaded.as3.PreloadSetManager; 
	import com.flashloaded.as3.Collection; 
	import com.flashloaded.as3.PhotoItem; 
	import flash.events.MouseEvent; 
	import flash.utils.setInterval; 
	import flash.utils.clearInterval; 
	 
	import flash.media.Sound; 
	import flash.utils.getDefinitionByName; 
	import flash.events.Event; 
	 
	public class PhotoFlow extends SelectionSystem{ 
		 
		private var preloadSetManager:PreloadSetManager; 
		private var _spacing:Number=30; 
		private var _distance:Number=20; 
		private var _cx:Number; 
		private var _cy:Number; 
		private var _sideScale:Number=0.8; 
		private var _resizeImage:String="none"; 
		private var _hpers:Number=30; 
		private var _vpers:Number=100; 
		private var _view:Number=50; 
 
		private var _photoWidth:Number=150; 
		private var _photoHeight:Number=150; 
		private var _speed:Number=0.5; 
		 
		//reflection 
		private var _reflectionExtend:Number=50; 
		private var _selectedAlpha:Number=70; 
		private var _notSelectedAlpha:Number=30; 
		private var _selectedDepth:Number=100; 
		private var _notSelectedDepth:Number=70; 
		private var _photoAngle:Number=10; 
		 
		//mouse event 
		private var _useMouseWheel:Boolean=true; 
		 
		//other parameters 
		private var _selectedY:Number=30; 
		private var _defaultIndex:Number=0; 
		private var _preloadSet:Number=3; 
		private var _autoFlip:Boolean=false; 
		private var _autoFlipDelay:Number=1; 
		private var autoFlipStep:Number=1; 
		private var _autoFlipPause:Boolean=false; 
		private var _navigating:Boolean=false; 
		private var _showReflection:Boolean=true; 
		 
		//other parameters 2 
		private var _sound:Sound; 
		private var _flipSoundClass:String; 
		private var _playSound:Boolean=true; 
		private var _selectedScale:Number=1; 
		 
		public function PhotoFlow(){ 
			 
		} 
		 
		override protected function prepareItemsData():void{ 
			//*override to create systemData object 
			 
			items=new PhotoCollection(); 
			listItems=new PhotoCollection(); 
			_cx=width/2; 
			_cy=height/2; 
			 
			if(_flipSoundClass!="" && _flipSoundClass!=null){ 
				var def=getDefinitionByName(_flipSoundClass); 
				_sound=new def; 
			} 
			 
			super.prepareItemsData(); 
			 
		} 
		 
		private function playSound(e:Event):void{ 
			if(_sound!=null){ 
				_sound.play(); 
			} 
		} 
		 
		override protected function createItem(data:Object,index:int):Item{ 
			var p:Photo=new Photo(); 
			p.init(this,data,index); 
			 
			return p; 
		} 
		 
		override protected function startCreateImages():void{ 
			//override 
			setEvent(); 
			setSelection(_defaultIndex); 
			preloadSetManager=new PreloadSetManager(_preloadSet,items,true); 
			 
			 
		} 
		 
		public function setEvent():void{ 
			if(_useMouseWheel){ 
				this.addEventListener(MouseEvent.MOUSE_WHEEL,mouseWheelHandler); 
			} 
			if(_autoFlip){ 
				setInterval(autoFlipNext,_autoFlipDelay*1000); 
			} 
		} 
		 
		private function autoFlipNext():void{ 
			if(!_navigating){ 
				if(!_autoFlipPause){ 
					if(autoFlipStep>0){ 
						next(); 
					}else{ 
						previous(); 
					} 
				} 
			}else{ 
				_navigating=false; 
			} 
		} 
		 
		public function delayAutoFlip():void{ 
			_navigating=true; 
		} 
		 
		private function mouseWheelHandler(e:MouseEvent):void{ 
			delayAutoFlip(); 
			if(e.delta>0){ 
				previous(); 
			}else{ 
				next(); 
			} 
		} 
		 
		public function previous():void{ 
			 
			setSelection(selectedIndex-1); 
		} 
		public function next():void{ 
			setSelection(selectedIndex+1); 
		} 
		 
		 
		public function positionPhotos():void{ 
			var itr:Iterator=photos.iterator(); 
			 
			while(itr.hasNext()){ 
				var p:Photo=Photo(itr.next()); 
				if(p.inited){ 
					p.position(); 
				} 
			} 
		} 
		 
		override public function setSelection(index:int):void{ 
			if(index>=0 && index90){ 
				angle=90; 
			}else if(angle<0){ 
				angle=0; 
			} 
			 
			_photoAngle=angle; 
		} 
		public function getPhotoAngle():Number{ 
			return _photoAngle*Math.PI/180; 
		} 
		public function getVpers():Number{ 
			return _vpers/100; 
		} 
		 
		[Inspectable(type=Number,defaultValue="30")] 
		 
		public function get selectedY():Number{ 
			return _selectedY; 
		} 
		public function set selectedY(num:Number):void{ 
			_selectedY=num; 
		} 
		 
		[Inspectable(type=Number,defaultValue="0")] 
		public function get defaultIndex():int{ 
			return _defaultIndex; 
		} 
		public function set defaultIndex(index:int):void{ 
			_defaultIndex=index; 
		} 
		 
		[Inspectable(type=Boolean,defaultValue="true")] 
		public function get useMouseWheel():Boolean{ 
			return _useMouseWheel; 
		} 
		public function set useMouseWheel(u:Boolean):void{ 
			if(u!=_useMouseWheel){ 
				_useMouseWheel=u; 
				if(!u){ 
					this.removeEventListener(MouseEvent.MOUSE_WHEEL,mouseWheelHandler); 
				}else{ 
					this.addEventListener(MouseEvent.MOUSE_WHEEL,mouseWheelHandler); 
				} 
			} 
		} 
		//0: loadAll -1: dontload 
		[Inspectable(type=Number,defaultValue="0")] 
		public function get preloadSet():int{ 
			return _preloadSet; 
		} 
		public function set preloadSet(s:int):void{			 
			_preloadSet=s; 
		} 
		 
		public function set autoFlipPause(p:Boolean):void{ 
			_autoFlipPause=true; 
		} 
		public function get autoFlipPause():Boolean{ 
			return _autoFlipPause; 
		} 
		 
		[Inspectable(type=Boolean,defaultValue="true")] 
		public function get showReflection():Boolean{ 
			return _showReflection; 
		} 
		 
		public function set showReflection(ref:Boolean):void{ 
			_showReflection=ref; 
			 
		} 
		 
		[Inspectable(type=String,defaultValue="")] 
		public function get flipSoundClass():String{ 
			return _flipSoundClass; 
		} 
		public function set flipSoundClass(sound:String):void{ 
			_flipSoundClass=sound; 
		} 
		 
		[Inspectable(type=Boolean,defaultValue="true")] 
		public function get playFlipSound():Boolean{ 
			return _playSound; 
		} 
		 
		public function set playFlipSound(s:Boolean):void{ 
			if(s){ 
				this.addEventListener(Event.SELECT,playSound); 
			}else{ 
				this.removeEventListener(Event.SELECT,playSound); 
			} 
			_playSound=s; 
		} 
		[Inspectable(type=Number,defaultValue="1")] 
		public function get selectedScale():Number{ 
			return _selectedScale; 
		} 
		public function set selectedScale(s:Number):void{ 
			_selectedScale=s; 
		} 
					  
		 
	} 
}