• 帮陈云庆做的手机报


    import flash.display.Sprite;
    import flash.display.Loader;
    import flash.net.URLRequest;
    import flash.events.Event;
    import flash.net.URLLoader;
    
    var swfURL:String="手机报_demo.swf";
    var xmlURL:String="newspaper.xml";
    
    var xml:XML;
    var len:int;
    var arr_imgName:Array;
    var arr_imgURL:Array;
    var arr_selectedPhoto:Array;
    
    var page:int;//页索引号
    var pageTotal:int;
    var imgs_perPage:int=4;
    
    var oldPhoto:PhotoModule;
    var photoSprite:Sprite=new Sprite();
    addChild(photoSprite);
    photoSprite.x=85;
    photoSprite.y=380;
    
    //---------------------------------------------------------------------------------------------------
    loadSwf(swfURL);
    loadXML(xmlURL);
    arr_selectedPhoto=[];
    
    prevBtn.addEventListener(MouseEvent.CLICK,prevBtnClick,false,0,true);
    nextBtn.addEventListener(MouseEvent.CLICK,nextBtnClick,false,0,true);
    
    function loadSwf(url:String):void {
    	var swfLoader:Loader=new Loader();
    	//addChild(swfLoader);
    	swfLoader.load(new URLRequest(url));
    	swfLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,swfLoaded,false,0,true);
    }
    
    function swfLoaded(e:Event):void {
    	var swf:Loader=e.currentTarget.loader;
    	swf.x=30;
    	swf.y=70;
    }
    
    //---------------------------------------------------------------------------------------------------
    function loadXML(url:String):void {
    	var xmlLoader:URLLoader=new URLLoader();
    	xmlLoader.load(new URLRequest(url));
    	xmlLoader.addEventListener(Event.COMPLETE,xmlLoaded,false,0,true);
    }
    
    function xmlLoaded(e:Event):void {
    	xml=XML(e.currentTarget.data);
    	len=xml.BusinessInfo.length();//图片总数
    	pageTotal=Math.ceil(len/imgs_perPage);//总页数
    	trace("图片总数len="+len);
    	trace("总页数pageTotal="+pageTotal);
    
    	arr_imgName=[];
    	arr_imgURL=[];
    	for (var i:int=0; i<len; i++) {
    		var imgName:String=xml.BusinessInfo[i].Name;
    		var imgURL:String=xml.BusinessInfo[i].Image;
    		arr_imgName[i]=imgName;
    		arr_imgURL[i]=imgURL;
    	}
    
    	loadPhotoModule(page);
    }
    
    //---------------------------------------------------------------------------------------------------
    function prevBtnClick(e:MouseEvent):void {
    	page--;
    	if (page<0) {
    		page=0;
    		return;
    	}
    	trace("(prevBtn)当前页索引号page="+page);
    	removePhoto();
    	loadPhotoModule(page);
    }
    
    function nextBtnClick(e:MouseEvent):void {
    	page++;
    	if (page==pageTotal) {
    		page=pageTotal-1;
    		return;
    	}
    	trace("(nextBtn)当前页索引号page="+page);
    	removePhoto();
    	loadPhotoModule(page);
    }
    
    //---------------------------------------------------------------------------------------------------
    function loadPhotoModule(page:int):void {
    	var startIndex:int=page*imgs_perPage;
    	var endIndex:int;
    	if (len%imgs_perPage!=0&&page==pageTotal-1) {
    		endIndex=len;
    	} else {
    		endIndex=startIndex+imgs_perPage;
    	}
    
    	for (var i:int=startIndex; i<endIndex; i++) {
    		var _name:String=arr_imgName[i];
    		var url:String=arr_imgURL[i];
    		var photoModule:PhotoModule=new PhotoModule(_name,url);
    		photoModule.name=String(i);
    		photoModule.buttonMode=true;
    		photoSprite.addChild(photoModule);
    		photoModule.x=(photoModule.width+15)*(i-startIndex);
    
    		if (arr_selectedPhoto.indexOf(photoModule.name)>=0) {
    			trace("该页包含之前已选中的图片");
    			photoModule.Selected=true;
    			photoModule.judgeSelected();
    			oldPhoto=photoModule;
    		}
    		photoModule.addEventListener(PhotoModule.CLICKED,photoModuleClicked,false,0,true);
    	}
    	trace("(loadPhotoModule)已选中图片数组arr_selectedPhoto=["+arr_selectedPhoto+"]");
    	trace("(loadPhotoModule)已选中图片数组arr_selectedPhoto的长度="+arr_selectedPhoto.length);
    }
    
    //---------------------------------------------------------------------------------------------------
    function removePhoto():void {
    	var num:int=photoSprite.numChildren;
    	for (var i:int; i<num; i++) {
    		photoSprite.removeChildAt(0);
    	}
    }
    
    //---------------------------------------------------------------------------------------------------
    function photoModuleClicked(e:Event):void {
    	var photo:PhotoModule=e.currentTarget as PhotoModule;
    	if (photo.Selected==true) {
    		if (oldPhoto&&photo!=oldPhoto) {
    			oldPhoto.Selected=false;
    			oldPhoto.judgeSelected();
    			arr_selectedPhoto.splice(0,1);
    		}
    		oldPhoto=photo;
    		arr_selectedPhoto.push(photo.name);
    	} else {
    		oldPhoto=undefined;
    		arr_selectedPhoto.splice(0,1);
    	}
    	trace("(photoModuleClicked)已选中图片数组arr_selectedPhoto=["+arr_selectedPhoto+"]");
    }
    
    
    //==========================PhotoModule.as类==========================
    
    package {
    	import flash.display.MovieClip;
    	import flash.display.Loader;
    	import flash.net.URLRequest;
    	import flash.events.Event;
    	import flash.events.MouseEvent;
    
    	public class PhotoModule extends MovieClip {
    		private var confinedWidth:Number=95;
    		private var confinedHeight:Number=65;
    
    		public var Selected:Boolean;
    		public static const CLICKED:String="clicked";
    
    		private var img:Loader;
    
    		public function PhotoModule(_name:String,url:String):void {
    			tf_name.text=_name;
    			tf_name.selectable=false;
    			bg.y=tf_name.y+tf_name.height+2;
    			gear.y=bg.y+bg.height+3;
    			loadImg(url);
    
    			addEventListener(MouseEvent.CLICK,clickHandler,false,0,true);
    		}
    
    		//---------------------------------------------------------------------------------------------------
    		private function loadImg(url:String):void {
    			var imgLoader:Loader=new Loader  ;
    			addChild(imgLoader);
    			setChildIndex(imgLoader,getChildIndex(bg)+1);
    			imgLoader.load(new URLRequest(url));
    			imgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,imgLoaded,false,0,true);
    		}
    
    		private function imgLoaded(e:Event):void {
    			img=e.currentTarget.loader;
    			//img.width=94;
    			//img.height=64;
    			setImgSize();
    			img.x=bg.x+(bg.width-img.width)/2;
    			img.y=bg.y+(bg.height-img.height)/2;
    		}
    
    		private function setImgSize():void {
    			if (img.width<=confinedWidth&&img.height<=confinedHeight) {
    				//不需要执行任何操作
    			} else {
    				if (img.width/confinedWidth>=img.height/confinedHeight) {
    					img.height=confinedWidth/img.width*img.height;
    					img.width=confinedWidth;
    				} else {
    					img.width=confinedHeight/img.height*img.width;
    					img.height=confinedHeight;
    				}
    			}
    		}
    
    		//---------------------------------------------------------------------------------------------------
    		private function clickHandler(e:MouseEvent):void {
    			if (bg.currentFrame==1) {
    				Selected=true;
    			} else {
    				Selected=false;
    			}
    			judgeSelected();
    		}
    
    		public function judgeSelected():void {
    			if (Selected==true) {
    				bg.gotoAndPlay(2);
    				gear.gotoAndPlay(2);
    			} else {
    				bg.gotoAndPlay(1);
    				gear.gotoAndPlay(1);
    			}
    			dispatchEvent(new Event(CLICKED));
    		}
    	}
    }
    
  • 相关阅读:
    2021年4月28日
    2021年4月18日
    2021年3月4日
    2020年11月20日
    20201112
    ThreadLocal原理分析
    git与gitlab
    DevOps与CICD简介
    代码扫描利器sonarqube
    看完小白也会使用,Android投屏神器scrcpy详细教程
  • 原文地址:https://www.cnblogs.com/leon3286/p/1788025.html
Copyright © 2020-2023  润新知