• 幻灯片:循环播放图片


    /*
    	先载入所有图片及标签,然后通过设置图片的深度来显示相应的图片(并非点击标签后再载入相应图片,因为这种幻灯片一般图片比较少)
    */
    package {
    	import flash.display.Sprite;
    	import flash.net.URLLoader;
    	import flash.net.URLRequest;
    	import flash.display.Loader;
    	import flash.events.Event;
    	import flash.events.MouseEvent;
    	import flash.utils.Timer;
    	import flash.events.TimerEvent;
    
    	public class Main extends Sprite {
    		var xmlURL:String="pict.xml";
    		var xml:XML;
    		var len:int;
    		var arr_picURL:Array;//图片路径
    
    		var arr_pic:Array;//存储图片的数组
    		var arr_label:Array;//存储标签的数组
    
    		var picSprite:Sprite;//装图片的容器,定义这个容器的目的是:方便直接设置标签处于所有图片的上方
    		var labelSprite:Sprite;//装标签的容器
    
    		var oldLabel:PhotoLabel;
    		
    		var timer:Timer;
    		var currentIndex:int;//当前显示图片的索引号
    
    		var counter:int;//作用:当所有图片载入完成后,将第一张图片设为默认显示图片(将其深度设为8)
    
    		public function Main():void {
    			picSprite=new Sprite  ;
    			showArea.addChild(picSprite);
    			picSprite.x=10;
    			picSprite.y=10;
    
    			labelSprite=new Sprite  ;
    			showArea.addChild(labelSprite);
    			labelSprite.x=20;
    			labelSprite.y=230;
    
    			init();
    		}
    
    		private function init():void {
    			loadXML(xmlURL);
    		}
    		
    		//---------------------------------------------------------------------------------@载入XML
    		private function loadXML(url:String):void {
    			var xmlLoader:URLLoader=new URLLoader  ;
    			xmlLoader.load(new URLRequest(url));
    			xmlLoader.addEventListener(Event.COMPLETE,xmlLoaded,false,0,true);
    		}
    
    		private function xmlLoaded(e:Event):void {
    			xml=XML(e.currentTarget.data);
    			len=xml.pict.length();
    			arr_picURL=[];
    			arr_pic=[];
    			arr_label=[];
    
    			for (var i:int=0; i<len; i++) {
    				var url:String=xml.pict[i].url;
    				arr_picURL[i]=url;
    			}
    
    			loadLabel();
    			loadPic();
    
    			timer=new Timer(2000,0);
    			timer.addEventListener(TimerEvent.TIMER,loopPic,false,0,true);
    			timer.start();
    		}
    		
    		//---------------------------------------------------------------------------------@载入标签
    		private function loadLabel():void {
    			for (var i:int=0; i<len; i++) {
    				var photoLabel:PhotoLabel=new PhotoLabel(String(i));
    				photoLabel.name=String(i);
    				labelSprite.addChild(photoLabel);
    				arr_label.push(photoLabel);
    				photoLabel.x=(photoLabel.width+8)*i;
    
    				photoLabel.addEventListener(MouseEvent.MOUSE_OVER,photoLabelMouseOver,false,0,true);
    				photoLabel.addEventListener(MouseEvent.MOUSE_OUT,photoLabelMouseOut,false,0,true);
    				photoLabel.addEventListener(MouseEvent.CLICK,photoLabelClick,false,0,true);
    			}
    		}
    
    		private function photoLabelMouseOver(e:MouseEvent):void {
    			var photoLabel:PhotoLabel=e.currentTarget as PhotoLabel;
    			if (! photoLabel.clicked) {
    				photoLabel.scaleX=1.2;
    				photoLabel.scaleY=1.2;
    			}
    		}
    		private function photoLabelMouseOut(e:MouseEvent):void {
    			var photoLabel:PhotoLabel=e.currentTarget as PhotoLabel;
    			if (! photoLabel.clicked) {
    				photoLabel.scaleX=1;
    				photoLabel.scaleY=1;
    			}
    		}
    		private function photoLabelClick(e:MouseEvent):void {
    			var photoLabel:PhotoLabel=e.currentTarget as PhotoLabel;
    			var index:int=int(photoLabel.name);
    			currentIndex=index;//加这句代码的目的是:当点击标签后,循环播放的是接下来的标签对应的图片
    			if (photoLabel!=oldLabel) {
    				photoLabel.clicked=true;
    				showPic(index);
    			}
    		}
    		//此段是核心
    		private function showPic(index:int):void {
    			var photoLabel:PhotoLabel=arr_label[index];
    			if (oldLabel) {
    				oldLabel.scaleX=1;
    				oldLabel.scaleY=1;
    				oldLabel.clicked=false;
    			}			
    			photoLabel.scaleX=1.4;
    			photoLabel.scaleY=1.4;
    			oldLabel=photoLabel;
    			picSprite.setChildIndex(arr_pic[index],8);
    		}
    		
    		//---------------------------------------------------------------------------------@载入图片
    		private function loadPic():void {
    			for (var i:int=0; i<len; i++) {
    				var picLoader:Loader=new Loader  ;
    				var picURL:String=arr_picURL[i];
    				picSprite.addChild(picLoader);
    				//picLoader.x=15*i;
    				//picLoader.y=15*i;
    				arr_pic.push(picLoader);
    				picLoader.load(new URLRequest(picURL));
    				picLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,picLoaded,false,0,true);
    			}
    		}
    		private function picLoaded(e:Event):void {
    			counter++;
    			var pic:Loader=e.currentTarget.loader;
    			pic.width=400;
    			pic.height=250;
    
    			if (counter==9) {
    				showPic(0);
    			}
    		}
    		//---------------------------------------------------------------------------------@循环播放图片
    		private function loopPic(e:TimerEvent):void {
    			currentIndex++;
    			if(currentIndex==len){
    				currentIndex=0;
    			}
    			showPic(currentIndex);
    		}
    	}
    }
    

  • 相关阅读:
    Non-local Neural Networks
    BERT-related Papers
    BERT在多模态领域中的应用
    Learning When and Where to Zoom with Deep Reinforcement Learning
    Physical Adversarial Textures That Fool Visual Object Tracking
    Deep Neural Networks are Easily Fooled: High Confidence Predictions for Unrecognizable Images
    Tutorial on Adversarial Example Generation
    NeurIPS 2019: Computer Vision Recap
    Deep Learning for Time Series Classification (InceptionTime)
    Contrastive Self-Supervised Learning
  • 原文地址:https://www.cnblogs.com/leon3286/p/1790675.html
Copyright © 2020-2023  润新知