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));
}
}
}