前段时间做的小项目中,用到了Flex,自己做了一个小的图片浏览器,带预览功能,还有特效。由于特效在使用时,可能会由于点击过快而出现错误,因此代码被注释掉,有兴趣的朋友可以自己试试。代码如下:

<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="830" height="607"
	 backgroundColor="#000000" xmlns:viewStackEffects="org.efflex.mx.viewStackEffects.*" 
	 horizontalScrollPolicy="off" verticalScrollPolicy="off">
	<mx:Script>
        <![CDATA[
        	import com.teamsun.sesd.basis.AboutSesd;
        	import com.doc.view.docmanager.Constant;
        	import mx.rpc.soap.LoadEvent;
        	import mx.collections.ArrayCollection;
        	import com.doc.view.docmanager.player.helper.PlayItem;
        	import com.doc.view.docmanager.player.helper.PlayList;
        	import mx.events.FlexEvent;
        	import mx.events.MetadataEvent;
            import mx.events.SliderEvent;
            import mx.core.UIComponent;
            import mx.controls.Alert;
            import mx.utils.StringUtil;
            import mx.controls.SWFLoader;
            
            /*左侧播放区的变量定义*/
            //定时器
            private var timer:Timer;
            //自动播放的延迟
            private var _delay:uint = 1000; //默认5秒
            //特效数量
            private var effectNum:uint = 18;
            //加载图像时的索引
            private var loadIndex:uint = 1;
            //加载预览图时的索引
            private var loadPreviewIndex:uint = 1;
            //播放列表
            private var _playList:PlayList;
            //当前播放的索引
            private var _currentIndex:int = 0;
            //是否在暂停状态
            private var _isPause:Boolean = false;
            //是否已经播放结束
            private var isOver:Boolean = false;
            
            /*图标定义*/
            //播放
            [Embed(source="assets/player/play.jpg")]
            [Bindable]
            private var playImage:Class;
            [Embed(source="assets/player/play_over.jpg")]
            [Bindable]
            private var playOverImage:Class;
            
            //暂停
            [Embed(source="assets/player/pause.jpg")]
            [Bindable]
            private var pauseImage:Class;
            [Embed(source="assets/player/pause_over.jpg")]
            [Bindable]
            private var pauseOverImage:Class;
            
             //上一个
            [Embed(source="assets/player/previous.jpg")]
            [Bindable]
            private var previousImage:Class;
            [Embed(source="assets/player/previous_over.jpg")]
            [Bindable]
            private var previousOverImage:Class;
            
             //下一个
            [Embed(source="assets/player/next.jpg")]
            [Bindable]
            private var nextImage:Class;
            [Embed(source="assets/player/next_over.jpg")]
            [Bindable]
            private var nextOverImage:Class;
            /*左侧播放区的变量定义*/
            
            
            /*右侧预览区的变量定义*/
            //图片总数
            private var imageCount:int;
            //第一张图片的 x 坐标位置
            private const firstX:int = 30;
            //预览图的大小
            private const previewWidth:int = 120;
            private const previewHeight:int = 90;
            //预览图之间的间隔
            private const previewPadding:int = 18;
            //预览图的数量
            private const previewCount:int = 5;
            //当前预览区所显示的最上面一副图片的索引
            private var topIndex:int = 0;
            //当前不需要移动预览区的索引差
            private var minIndex:int = 0;
            //上箭头
            [Embed(source="assets/player/up.png")]
            [Bindable]
            private var upImage:Class;
            [Embed(source="assets/player/down.png")]
            [Bindable]
            private var downImage:Class;
            /*右侧预览区的变量定义*/
            
            private function set isPause(state:Boolean):void
            {
            	this._isPause = state;
            	setPreviewButtonStatus(state);
            }
            
            private function get isPause():Boolean
            {
            	return this._isPause;
            }
            
            //停止播放
            private function stop():void
            {
            	if(timer.running) timer.stop();
            	this.isPause = true;
            	changeImage1(null);
            	
            }
            
            //重置定时器
            private function resetTimer():void{
				if(timer.running) timer.stop();
				timer = new Timer(_delay, 5);
				timer.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete);
				timer.start();
				changeImage1(null);
				showHint((this._currentIndex + 1) + "/" + this.imageCount);
			}
			
			//定时器触发的操作,播放下一张图片
			private function onTimerComplete(event:TimerEvent):void{
				next(null);
			}
			
			//生成随机数
			private function randNum():uint{
				return Math.floor(Math.random() * effectNum);
			}
			
			//切换图片
			private function change(fromIndex:uint, toIndex:uint):void{
//				var box_prve:Canvas = vs.getChildAt(fromIndex) as Canvas;
//				var box_next:Canvas = vs.getChildAt(toIndex) as Canvas;
//				var randN:uint = randNum();
//				switch(randN){
//					case 1:
//						box_prve.setStyle("hideEffect", effect1);
//						box_next.setStyle("showEffect", effect1);
//						break;
//					case 2:
//						box_prve.setStyle("hideEffect",effect2);
//						box_next.setStyle("showEffect",effect2);
//						break;
//					case 3:
//						box_prve.setStyle("hideEffect",effect3);
//						box_next.setStyle("showEffect",effect3);
//						break;
//					case 4:
//						box_prve.setStyle("hideEffect",effect4);
//						box_next.setStyle("showEffect",effect4);
//						break;
//					case 5:
//						box_prve.setStyle("hideEffect",effect5);
//						box_next.setStyle("showEffect",effect5);
//						break;
//					case 6:
//						box_prve.setStyle("hideEffect",effect6);
//						box_next.setStyle("showEffect",effect6);
//						break;
//					case 7:
//						box_prve.setStyle("hideEffect",effect7);
//						box_next.setStyle("showEffect",effect7);
//						break;
//					case 8:
//						box_prve.setStyle("hideEffect",effect8);
//						box_next.setStyle("showEffect",effect8);
//						break;
//					case 9:
//						box_prve.setStyle("hideEffect",effect9);
//						box_next.setStyle("showEffect",effect9);
//						break;
//					case 10:
//						box_prve.setStyle("hideEffect",effect10);
//						box_next.setStyle("showEffect",effect10);
//						break;
//					case 11:
//						box_prve.setStyle("hideEffect",effect11);
//						box_next.setStyle("showEffect",effect11);
//						break;
//					case 12:
//						box_prve.setStyle("hideEffect",effect12);
//						box_next.setStyle("showEffect",effect12);
//						break;
//					case 13:
//						box_prve.setStyle("hideEffect",effect13);
//						box_next.setStyle("showEffect",effect13);
//					case 14:
//						box_prve.setStyle("hideEffect",effect14);
//						box_next.setStyle("showEffect",effect14);
//						break;
//					case 15:
//						box_prve.setStyle("hideEffect",effect15);
//						box_next.setStyle("showEffect",effect15);
//						break;
//					case 16:
//						box_prve.setStyle("hideEffect",effect16);
//						box_next.setStyle("showEffect",effect16);
//						break;
//					case 17:
//						box_prve.setStyle("hideEffect",effect17);
//						box_next.setStyle("showEffect",effect17);
//					default:
//						box_prve.setStyle("hideEffect",effect0);
//						box_next.setStyle("showEffect",effect0);
//				}
				
				//更换图片的边框样式
				var fromBox:Canvas = getPreviewCanvas(fromIndex);
				fromBox.setStyle("borderStyle", "none");
				fromBox.validateNow();
				
				var toBox:Canvas = getPreviewCanvas(toIndex);
				toBox.setStyle("borderStyle", "solid");
				toBox.validateNow();				
				
				movePreviewBoxTo(toIndex);
				vs.selectedIndex = toIndex;
				if(!isPause)
				{
					resetTimer();
				}
			}
			
			private function getPreviewCanvas(index:int):Canvas
			{
				var box:Canvas = this.previewBox.getChildAt(index) as Canvas;
				return box;
			}
            
            // 设置图片集
            public function set playList(playList:PlayList):void{
            	System.useCodePage=true;
				timer = new Timer(_delay, 5);
				timer.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete);
            	this._playList = playList;
            	this.imageCount = this._playList.size();
            	this.recalcPreviewSize();
				loadImage();
            }
            
            /*根据图片的数量来计算预览区的大小*/
            private function recalcPreviewSize():void
            {
            	this.previewBox.height = this.imageCount * this.previewHeight + (this.imageCount + 1) * this.previewPadding;
            	this.previewBox.y = 0;
            }
            
            /*根据图片的索引号,计算图片在 previewBox 内部的相对位置*/
            private function getPreviewImageY(index:int):int
            {
            	return index * (this.previewHeight + this.previewPadding);
            }
            
            //判断当前要播放的索引是否需要移动 previewBox
            private function needMove(toIndex:int):Boolean
            {
            	//当前的图片数量小于容器所能展示的数量,不需要移动
            	if(this.imageCount <= this.previewCount) return false;
            	//当前容器显示的是第一张图片
            	if(this.topIndex == 0)
            	{
            		if(toIndex > this.minIndex) return true;
            		else return false;	
            	}
            	//当前容器已经移动到最底部
            	else if(this.topIndex == this.imageCount - this.previewCount)
            	{
            		if(toIndex < this.imageCount - this.minIndex) return true;
            		else return false;
            	}
            	//当前容器在中间,可以上移,也可以下移
            	else
            	{
            		if(toIndex - this.topIndex != this.minIndex) return true;
            		else return false;
            	}
            }
            
            //根据当前的播放索引,获得 previewBox 应处的位置
            private function getPreviewBoxY(moveIndex:int):int
            {
            	return moveIndex * (this.previewPadding + this.previewHeight);	
            }
            
            private function movePreviewBoxTo(toIndex:int):void
            {
            	if(!needMove(toIndex)) return;
            	var moveIndex:int = toIndex - this.minIndex;
            	if(moveIndex < 0) moveIndex = 0;
            	if(moveIndex > this.imageCount - this.previewCount) moveIndex = this.imageCount - this.previewCount;
            	movePreviewBox(moveIndex);
            }
            
            //根据索引,移动 previewBox
            private function movePreviewBox(moveIndex:int):void
            {
            	var y:int = -1 * getPreviewBoxY(moveIndex);
            	this.moveCtrl.xTo = 0;
            	this.moveCtrl.yTo = y;
            	this.moveCtrl.target = this.previewBox;
            	this.moveCtrl.play();
            	this.topIndex = moveIndex;
            }
            
            //将预览区向上移动一格
            private function movePreviewBoxUp():void
            {
            	if(this.topIndex > 0)
            	{
            		movePreviewBox(this.topIndex - 1);            		
            	}
            }
            
            //将预览区向下移动一格
            private function movePreviewBoxDown():void
            {
            	if(this.topIndex < this.imageCount - this.previewCount)
            	{
            		movePreviewBox(this.topIndex + 1);
            	}
            }
            
            
            /*加载图片*/
            private function loadImage():void
            {
				if(loadPreviewIndex > this._playList.size())
				{
					//隐藏进度条
					this.isPause = false;
					loadBar.visible = false;
					vs.visible = true;
					previewBox.visible = true;
					previewOuterBox.visible = true;
					vs.selectedIndex = 0;
					getPreviewCanvas(0).setStyle("borderStyle", "solid");
					getPreviewCanvas(0).validateNow();
					
					//计算不需要移动预览区的索引差
					this.minIndex = Math.floor(this.previewCount / 2);
					
					//开始播放
					this.speedSlider.enabled = true;
					this.playPauseBtn.enabled = true;
					this.previousBtn.enabled = true;
					this.nextBtn.enabled = true;
					this.playPauseBtn.addEventListener(MouseEvent.CLICK, playPause);
					this.playPauseBtn.addEventListener(MouseEvent.MOUSE_OVER, changeOverImage1);
					this.playPauseBtn.addEventListener(MouseEvent.MOUSE_OUT, changeImage1);
					this.previousBtn.addEventListener(MouseEvent.CLICK, previous);
					this.previousBtn.addEventListener(MouseEvent.MOUSE_OVER, changeOverImage2);
					this.previousBtn.addEventListener(MouseEvent.MOUSE_OUT, changeImage2);
					this.nextBtn.addEventListener(MouseEvent.CLICK, next);
					this.nextBtn.addEventListener(MouseEvent.MOUSE_OVER, changeOverImage3);
					this.nextBtn.addEventListener(MouseEvent.MOUSE_OUT, changeImage3);
					showHint((this._currentIndex + 1) + "/" + this.imageCount);
					resetTimer();
				}
            	else if(loadIndex > this._playList.size()){
					var preImage:SWFLoader = new SWFLoader();
					preImage.buttonMode = true;
					preImage.useHandCursor = true;
					preImage.addEventListener(ProgressEvent.PROGRESS, onLoadingPreview);
					preImage.addEventListener(Event.COMPLETE, onLoadedPreview);
					preImage.load(_playList.getItem(loadPreviewIndex - 1).preview);
				}
				else
				{
					var image:SWFLoader = new SWFLoader();
					image.buttonMode = true;
					image.useHandCursor = true;
					image.addEventListener(MouseEvent.CLICK, onClick);
					image.addEventListener(ProgressEvent.PROGRESS, onLoadingImage);
					image.addEventListener(Event.COMPLETE, onLoadedImage);
					image.load(_playList.getItem(loadIndex - 1).url);
				}
            }
            
            private function onLoadingPreview(event:ProgressEvent):void{
				var numPerc:Number = Math.round((Number(event.bytesLoaded) / Number(event.bytesTotal)) * 100);
				if(numPerc > 99) numPerc = 99;
				loadBar.setProgress(numPerc, 100);
				loadBar.label ="正在载入第" + loadPreviewIndex + "张预览图 " + numPerc + "%";
				loadBar.validateNow();
			}
            
            //加载完预览图
            private function onLoadedPreview(event:Event):void
            {
            	//处理加载的图片
				var tempImg:SWFLoader = event.target as SWFLoader;
				var matrix:Matrix = tempImg.transform.matrix;
				var scale:Number = 0;
				var dx:Number;
				var dy:Number;
				if((tempImg.contentWidth / tempImg.contentHeight) <= (this.previewWidth)/(this.previewHeight))
				{
					scale = this.previewHeight / tempImg.contentHeight;
					if(scale < Constant.MIN_SCALE) scale = Constant.MIN_SCALE;
					dx = (this.previewWidth - tempImg.contentWidth * scale) / 2;//将图片水平居中
					dy = 0;
				}
				else
				{
					scale = this.previewWidth / tempImg.contentWidth;
					if(scale < Constant.MIN_SCALE) scale = Constant.MIN_SCALE;
					dy = (this.previewHeight - tempImg.contentHeight * scale) / 2;//将图片垂直居中
					dx = 0;
				}
				
				matrix.scale(scale, scale);
				matrix.translate(dx, dy);
				tempImg.transform.matrix = matrix;
				tempImg.toolTip = this._playList.getItem(this.loadPreviewIndex - 1).name;
				
				//新建一个编号容器
				var labelBox:Canvas = new Canvas();
				labelBox.width = 55;
				labelBox.height = 20;
				labelBox.alpha = 0.5;
				labelBox.x = this.previewWidth - 55 - dx;
				labelBox.y = this.previewHeight - 20 - dy;
				labelBox.setStyle("backgroundColor", "0x333333");
				
				//新建一个 Label
				var label:Label = new Label();
				label.width = 55;
				label.height = 20;
				label.x = 0;
				label.y = 0;
				label.setStyle("color", "0xFFFFFF");
				label.setStyle("paddingTop", 2);
				label.setStyle("textAlign", "center");
				label.setStyle("fontWeight", "bold");
				label.text = this.loadPreviewIndex + "/" + this.imageCount;
				labelBox.addChild(label);
				
				
				//新建一个容器, 将图片加到容器内
				var box:Canvas = new Canvas();
				box.width = this.previewWidth;
				box.height = this.previewHeight;
				box.horizontalScrollPolicy = "off";
				box.verticalScrollPolicy = "off";
				box.setStyle("backgroundColor", "0x000000");
				box.addChild(tempImg);
				box.addChild(labelBox);
				
				box.x = this.firstX;
				box.y = (this.loadPreviewIndex - 1) * this.previewHeight + this.loadPreviewIndex * this.previewPadding;
				box.setStyle("borderColor", "0xFFFFFF");
				box.setStyle("borderThickness", 2);
				box.setStyle("borderStyle", "none");
				box.addEventListener(MouseEvent.CLICK, onPreviewClick);
				this.previewBox.addChild(box);
				loadPreviewIndex ++;
				loadImage();
            }
            
            private function onLoadingImage(event:ProgressEvent):void{
				var numPerc:Number = Math.round((Number(event.bytesLoaded) / Number(event.bytesTotal)) * 100);
				if(numPerc > 99) numPerc = 99;
				loadBar.setProgress(numPerc, 100);
				loadBar.label ="正在载入第" + loadIndex + "张图片 " + numPerc + "%";
				loadBar.validateNow();
			}
            
            //加载完成某张图片,将图片加入到当前的画布中
            private function onLoadedImage(event:Event):void
            {
				//处理加载的图片
				var tempImg:SWFLoader = event.target as SWFLoader;
				var matrix:Matrix = tempImg.transform.matrix;
				var scale:Number = 0;
				var dx:Number;
				var dy:Number;
				if((tempImg.contentWidth / tempImg.contentHeight) <= (this.imageBox.width)/(this.imageBox.height))
				{
					scale = this.imageBox.height / tempImg.contentHeight;
					if(scale < Constant.MIN_SCALE) scale = Constant.MIN_SCALE;
					dx = (this.imageBox.width - tempImg.contentWidth * scale) / 2;//将图片水平居中
					dy = 0;
				}
				else
				{
					scale = this.imageBox.width / tempImg.contentWidth;
					if(scale < Constant.MIN_SCALE) scale = Constant.MIN_SCALE;
					dy = (this.imageBox.height - tempImg.contentHeight * scale) / 2;//将图片垂直居中
					dx = 0;
				}
				
				matrix.scale(scale, scale);
				matrix.translate(dx, dy);
				tempImg.transform.matrix = matrix;
				
				//新建一个容器, 将图片加到容器内
				var box:Canvas = new Canvas();
				box.width = this.imageBox.width;
				box.height = this.imageBox.height;
				box.horizontalScrollPolicy = "off";
				box.verticalScrollPolicy = "off";
				box.setStyle("backgroundColor", "0x000000");
				box.addChild(tempImg);
				box.x=4;
				box.y=4;
				
				//将容器加到viewStack中
				vs.addChild(box);
				
            	//加载下一张
            	loadIndex ++;
            	loadImage();
            }
            
            //点击图片时播放下一张
            private function onClick(event:MouseEvent):void{
				next(null);
			}
			
			//点击预览图时
			private function onPreviewClick(event:MouseEvent):void
			{
				var box:Canvas = event.currentTarget as Canvas;
				var index:int = previewBox.getChildIndex(box);
				setCurrentIndex(index);
			}
            
            //设置当前播放的索引
            private function setCurrentIndex(index:int):void
            {
            	if(!this._playList.validIndex(index))
            	{
            		if(index >= _playList.size())
            		{
            			this.isOver = true;
            			showHint("播放结束");
            			stop();
            		}
        			return;
            	}
            	
            	var prveIndex:uint = this._currentIndex;
				this._currentIndex = index;
				change(prveIndex, this._currentIndex);
				showHint((this._currentIndex + 1) + "/" + this.imageCount);
            }
            
            //播放上一个
            public function previous(event:MouseEvent):void
            {
            	setCurrentIndex(this._currentIndex - 1);
            }
            
            //播放下一个
            public function next(event:MouseEvent):void
            {
            	setCurrentIndex(this._currentIndex + 1);
            }
            
            //播放 or 暂停
            private function playPause(event:MouseEvent):void{
            	if(isOver)
            	{
            		isOver = false;
            		isPause = false;
            		if(this._currentIndex == (this.imageCount - 1))
            		{
            			setCurrentIndex(0);
            		}
            		else
            		{
            			setCurrentIndex(this._currentIndex);
            		}
            	}
            	else
            	{
	                if(isPause){
	                	this.isPause = false;
	                	resetTimer();
	                }
	                else{
	                    stop();
	                }
             	}
            }
            
            //设置预览区按钮状态
            private function setPreviewButtonStatus(state:Boolean):void
            {
            	this.previousPrev.enabled = state;
            	this.nextPrev.enabled = state;
            }
           
           /*鼠标进入图标时,改变图标*/
           private function changeOverImage1(event:MouseEvent):void
           {
       			if(isPause)
       			{
       				this.playPauseBtn.source = playOverImage;
       			}
       			else
       			{
       				this.playPauseBtn.source = pauseOverImage;
       			}
           }
           
           private function changeOverImage2(event:MouseEvent):void
           {
           		this.previousBtn.source = previousOverImage;
           }
           
           private function changeOverImage3(event:MouseEvent):void
           {
           		this.nextBtn.source = nextOverImage;
           }
           
           /*鼠标移出图标时,改变图标*/
           private function changeImage1(event:MouseEvent):void
           {
   				if(isPause)
       			{
       				this.playPauseBtn.source = playImage;
       			}
       			else
       			{
       				this.playPauseBtn.source = pauseImage;
       			}
           }
           
           private function changeImage2(event:MouseEvent):void
           {
           		this.previousBtn.source = previousImage;
           }
           private function changeImage3(event:MouseEvent):void
           {
           		this.nextBtn.source = nextImage;
           }
           
           //格式化速度的显示
           private function formatSpeedSlideTooltip(value:Number):String
           {
           		return value + "秒";
           }
           
           //拖拽滑块
           private function thumbDragHandler():void
           {
           		//停止播放
           		stop();
           }
           
           //放开滑块
           private function thumbReleaseHandler():void
           {
           		this._delay = this.speedSlider.value * 200;
           		next(null);
           }
           
           //显示信息
           private function showHint(msg:String):void
           {
           		this.hint.text = msg;
           }
        ]]>
    </mx:Script>
    <mx:Canvas width="100%" height="100%" x="0" y="0">
    	<mx:Canvas id="playArea" width="650" height="100%" x="-1" y="-1" horizontalScrollPolicy="off" verticalScrollPolicy="off"  borderColor="#FFFFFF" borderStyle="solid">
    		<mx:Canvas id="controlBar" width="100%" height="60" y="547" horizontalScrollPolicy="off" verticalScrollPolicy="off" x="0" borderColor="#FFFFFF" borderStyle="solid" borderSides="top">
			  <mx:Image source="{previousImage}" id="previousBtn"
			   width="32" height="32" x="40" y="14" enabled="false"/>
			  
			  <mx:Image source="{playImage}" id="playPauseBtn"
			   width="64" height="64" x="86" y="-3" enabled="false"/>
			  
			  <mx:Image source="{nextImage}" id="nextBtn"
			   width="32" height="32" x="163" y="14" enabled="false"/>
			  <mx:Label x="391" y="22" text="播放速度" width="63" fontFamily="黑体" fontSize="13" color="#FFFFFF"/>
			  <mx:HSlider id="speedSlider" x="454" y="19" minimum="1" maximum="10" value="5" snapInterval="1"
			  		dataTipFormatFunction="formatSpeedSlideTooltip" allowTrackClick="false"
			  		thumbDrag="thumbDragHandler()" thumbRelease="thumbReleaseHandler()" enabled="false"/>
			  <mx:Label x="203" y="23" width="180" fontFamily="宋体" fontSize="12" color="#FFFFFF" textAlign="center" id="hint"/>
    		</mx:Canvas>
    	
	    	<mx:Canvas id="imageBox" width="100%" x="0" y="0" height="547"
	    		 horizontalScrollPolicy="off" verticalScrollPolicy="off" backgroundColor="#000000">
	    		 
	    		 <mx:ProgressBar id="loadBar" width="70%" mode="manual" label="正在载入图片数据 0%" labelWidth="{loadBar.width}"
	    					fontSize="12" color="0x9A9A9A" textAlign="center" x="87" y="255"/>
	    					
	    		<mx:ViewStack id="vs" x="0" y="0" width="650" height="547" visible="false"/>
	    		<!--<mx:Label x="214" y="248" text="正在加载数据..." width="198" id="loadHint" color="#FFFFFF" fontFamily="宋体" fontSize="12" textAlign="center"/>-->
		    </mx:Canvas>
	    </mx:Canvas>
	    <mx:Canvas width="180" height="100%" x="650" y="0" verticalScrollPolicy="off" horizontalScrollPolicy="off">
	    	<mx:Button x="0" y="0" label="︽" width="180" height="23" id="previousPrev" click="movePreviewBoxUp()"/>
	    	<mx:Canvas id="previewOuterBox" visible="false" horizontalScrollPolicy="off" verticalScrollPolicy="off" width="180" height="558" y="24" x="0" backgroundColor="#000000">
	    		<mx:Canvas id="previewBox" visible="false" horizontalScrollPolicy="off" verticalScrollPolicy="off" width="180" height="558" y="0" x="0" backgroundColor="#000000">
	    		</mx:Canvas>
	    	</mx:Canvas>
	    	<mx:Button x="0" y="583" label="︾" width="180" id="nextPrev" click="movePreviewBoxDown()"/>
	    </mx:Canvas>
    </mx:Canvas>
    <mx:Move id="moveCtrl" duration="500"/>
    <!-- 特效
    <viewStackEffects:Fade id="effect1"/>
	<viewStackEffects:Slide id="effect0"/>
	<viewStackEffects:Slide id="effect14" direction="down"/>
	<viewStackEffects:FlipPapervision3D id="effect2" direction="left"/>
	<viewStackEffects:FlipPapervision3D id="effect15" direction="right"/>
	<viewStackEffects:FlipPapervision3D id="effect16" direction="down"/>
	<viewStackEffects:FlipPapervision3D id="effect17" direction="up"/>
	<viewStackEffects:FadeZoom id="effect3"/>
	<viewStackEffects:FadeZoom id="effect10" verticalAlign="top" horizontalAlign="left"/>
	<viewStackEffects:FadeZoom id="effect11" verticalAlign="top" horizontalAlign="right"/>
	<viewStackEffects:FadeZoom id="effect12" verticalAlign="bottom" horizontalAlign="left"/>
	<viewStackEffects:FadeZoom id="effect13" verticalAlign="bottom" horizontalAlign="right"/>
	<viewStackEffects:Grid id="effect4"/>
	<viewStackEffects:GridZoom id="effect5"/>
	<viewStackEffects:Squash id="effect6"/>
	<viewStackEffects:Squash id="effect7" direction="right"/>
	<viewStackEffects:Squash id="effect8" direction="down"/>
	<viewStackEffects:Squash id="effect9" direction="up"/> -->
</mx:Canvas>
 
由于是第一次接触 Flex, 对Flex还不是很熟,感觉很多代码还需优化。进一步学习中。
posted on 2011-12-04 12:39  Michael.Ma  阅读(286)  评论(0编辑  收藏  举报