帮陈云庆做的手机报

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));
		}
	}
}
原文地址:https://www.cnblogs.com/leon3286/p/1788025.html