⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 menuxmlassembler.as

📁 国外强大的xml相册
💻 AS
字号:
//***********************alert********************************************
import pssclasses.*;
//BrowserControler
import pssclasses.browser.*;
//***********************MenuXMLAssembler class*************************
import pssclasses.splitpanel.leftmenu.*;
class MenuXMLAssembler {
	//************define attributes**********
	private static var MENUISLOADED:Boolean = false;
	private static var ALBUMSCOUNT:Number = 0;
	private static var ALBUMSLOADED:Number = 0;
	private static var PHOTOSISLOADED:Boolean = false;
	private static var pathToPartXML:String = "photoparts/";
	// **********arrays***********
	private static var arrTemas:Array = new Array();
	private static var arrAlbums:Array = new Array();
	private static var arrPhotos:Array;
	private static var DynamicPart:Boolean = false;
	private static var DynamivPartIndex:Number;
	// slide show
	private static var SlidePhotosArray:Array;
	private static var SlidePIsLoaded:Boolean;
	// calback action
	private static var CallBackObject:Object;
	private static var CallbackMetod:Function;
	//*************define metods*************
	private function MenuXMLAssembler() {
	}
	// build menu 
	public static function buildMenuItems():Void {
		if (!MENUISLOADED) {
			loadMenuXML();
		}
	}
	// ***********load menu xml*****************
	private static function loadMenuXML():Void {
		var partXML:XML = new XML();
		partXML.ignoreWhite = true;
		var partsCount:Number;
		partXML.onLoad = function(success:Boolean):Void  {
			if (success && partXML.status == 0) {
				// parts
				arrTemas = loadAndBuildPartObject();
				// albums
				loadAndBuildAlbums();
			} else {
				var _PSSalert:Object = new PSSalert();
				_PSSalert.showGlobalAlert(_global.PSS_UI.lib_err, _global.PSS_UI.lib_alert, "okbuttonAlert", true);
				delete _PSSalert;
			}
		};
		//********************load***********************
		partXML.load("photoparts/parts.xml");
		//**************loadAndBuildObject**************
		function loadAndBuildPartObject():Array {
			//***************load parts xml***************   
			partsCount = partXML.firstChild.childNodes.length;
			if (!partsCount) {
				partsCount = 0;
				// open empty panel
				MENUISLOADED = true;
				PHOTOSISLOADED = false;
				arrTemas = new Array(0);
				arrAlbums = new Array(0);
				arrPhotos = new Array(0);
				return [];
			}
			var tempArray:Array = new Array();
			// build parts objects
			for (var i = 0; i<partsCount; i++) {
				var partObject:Object = new Object();
				partObject.sort = partXML.firstChild.childNodes[i].attributes.sort;
				partObject.name = partXML.firstChild.childNodes[i].attributes.name;
				partObject.id = partXML.firstChild.childNodes[i].attributes.id;
				partObject.index = i;
				tempArray[i] = partObject;
			}
			// end build parts objects
			return tempArray;
		}
		//***************load albums xml************
		function loadAndBuildAlbums():Void {
			var partsCount:Number = arrTemas.length;
			ALBUMSCOUNT = partsCount;
			var partsObject:Object = new Object();
			for (var i = 0; i<partsCount; i++) {
				partsObject = arrTemas[i];
				// load albums xml
				loadAndBuild(partsObject);
			}
			//*************load and works with albums xml****************
			function loadAndBuild(partObject:Object):Void {
				var partsObject:Object = partObject;
				var partIndex:Number = Number(partsObject.index);
				var pathToAlbumXML:String = pathToPartXML+partsObject.id+"/albums.xml";
				var albumsCount:Number;
				var tempArray:Array = new Array();
				//xml difine
				var albumXML:XML = new XML();
				albumXML.ignoreWhite = true;
				albumXML.onLoad = function(success:Boolean):Void  {
					if (success && albumXML.status == 0) {
						// define same attributes for albums into one part
						var sort:String;
						//albumXML.firstChild.attributes.sort;
						var p_id:String = albumXML.firstChild.attributes.id;
						var mwidth:String = albumXML.firstChild.attributes.mwidth;
						var mheight:String = albumXML.firstChild.attributes.mheight;
						// albums xml 
						albumsCount = albumXML.firstChild.childNodes.length;
						for (var i = 0; i<albumsCount; i++) {
							var tempObject:Object = new Object();
							//add same attributes for albums into one part
							tempObject.sort = albumXML.firstChild.childNodes[i].attributes.sort;
							tempObject.p_id = p_id;
							tempObject.mwidth = mwidth;
							tempObject.mheight = mheight;
							//add album attributes 
							tempObject.name = albumXML.firstChild.childNodes[i].attributes.name;
							tempObject.id = Number(albumXML.firstChild.childNodes[i].attributes.id);
							tempObject.sounddesc = albumXML.firstChild.childNodes[i].attributes.sounddesc;
							tempObject.index = i;
							/*
							if (partsObject.sort == "DESC") {
							tempObject.index = (albumsCount-1)-i;
							}
							*/
							// add albums object to temp array                          
							tempArray[i] = tempObject;
						}
						//******************SORT***********************
						if (partsObject.sort == "DESC") {
							tempArray.sortOn("id", Array.DESCENDING);
						} else {
							tempArray.sortOn("id", Array.NUMERIC);
						}
						//***************set subpartindex*****************
						var subCounter:Number = tempArray.length;
						for (var i = 0; i<subCounter; i++) {
							tempArray[i].index = i;
						}
						//******end*****set subpartindex*****************
						//**end*************SORT***********************                             
						// add result to albums array with part index this album
						arrAlbums[partIndex] = tempArray;
						//***************count loaded albums xml******
						ALBUMSLOADED++;
						if (ALBUMSLOADED == ALBUMSCOUNT) {
							MENUISLOADED = true;
							// callback
							CallbackMetod.apply(CallBackObject);
						}
						//***end********count loaded albums xml******                                      
					} else {
						ALBUMSLOADED++;
						arrAlbums.push(undefined);
						if (ALBUMSLOADED == ALBUMSCOUNT) {
							MENUISLOADED = true;
							// callback
							CallbackMetod.apply(CallBackObject);
						}
						//var _PSSalert:Object = new PSSalert(); 
						//_PSSalert.showGlobalAlert(_global.PSS_UI.lib_err, _global.PSS_UI.lib_alert, "okbuttonAlert", true);
						//delete _PSSalert;
					}
				};
				albumXML.load(pathToAlbumXML);
			}
		}
		// end metod
	}
	//********************return MENUISLOADED********************
	public static function get isLoaded():Boolean {
		return MENUISLOADED;
	}
	//*******************return part array****************************
	public static function get partArray():Array {
		return arrTemas;
	}
	// *******************return albums array***********************
	public static function get albumsArray():Array {
		return arrAlbums;
	}
	//************************************LOAD PHOTOS XML*******************************
	public static function loadPhotosXML(partID:Number, albumID:Number):Void {
		BrowserControler.desableActivBrovser(true)
		//**************************SEARCH PARTAND SUB PART INDEX BY ID****************
		var partIndex:Number = getPartIndexByID(arrTemas, partID);
		var subpartIndex:Number = getAlbumIndexByID(arrAlbums, albumID, partIndex);
		//look sort for this subpart
		var tempSubPartsArr:Array = arrAlbums[partIndex];
		var tempSubObject:Object = tempSubPartsArr[subpartIndex];
		var SubPartSort:String = tempSubObject.sort;
		//********END************SEARCH PARTAND SUB PART INDEX BY ID****************
		PHOTOSISLOADED = false;
		var mwidth:Number;
		var mheight:Number;
		var p_id:Number = partID;
		var a_id:Number = albumID;
		var sort:String;
		var photoCount:Number;
		var childCount:Number;
		arrPhotos = new Array();
		var photosXML:XML = new XML();
		var xmlNode:XMLNode;
		photosXML.ignoreWhite = true;
		photosXML.onLoad = function(success):Void  {
			if (success && photosXML.status == 0) {
				// define same attributes for photos
				sort = SubPartSort;
				//photosXML.firstChild.attributes.sort;
				a_id = Number(photosXML.firstChild.attributes.id);
				mwidth = Number(photosXML.firstChild.attributes.mwidth);
				mheight = Number(photosXML.firstChild.attributes.mheight);
				//************************look photos********************
				photoCount = photosXML.firstChild.childNodes.length;
				for (var i = 0; i<photoCount; i++) {
					// set photo data 
					var photoObject:Object = new Object();
					photoObject.sort = sort;
					photoObject.a_id = a_id;
					photoObject.p_id = p_id;
					photoObject.mwidth = mwidth;
					photoObject.mheight = mheight;
					//return values
					xmlNode = photosXML.firstChild.childNodes[i];
					childCount = xmlNode.childNodes.length;
					for (var c = 0; c<childCount; c++) {
						photoObject[xmlNode.childNodes[c].nodeName] = xmlNode.childNodes[c].firstChild.nodeValue;
					}
					// set photo object to photo array
					arrPhotos[i] = photoObject;
				}
				//******************SORT***********************
				if (sort == "DESC") {
					//arrPhotos.sortOn("id", Array.DESCENDING , Array.NUMERIC);
					arrPhotos.reverse();
				} else {
					//arrPhotos.sortOn("id", Array.NUMERIC);
				}
				//**end*************SORT***********************                               
				PHOTOSISLOADED = true;
				BrowserControler.setPhotoCount(arrPhotos.length)
			} else {
				BrowserControler.setPhotoCount(0)
				PHOTOSISLOADED = true;
				var _PSSalert:Object = new PSSalert();
				_PSSalert.showGlobalAlert(_global.PSS_UI.lib_emptysubpart, _global.PSS_UI.lib_alert, "okbuttonAlert", true);
				delete _PSSalert;
			}
			CallbackMetod.apply(CallBackObject);
		};
		photosXML.load(pathToPartXML+partID+"/"+albumID+"/photos.xml");
		//*********************return tag values***********************
	}
	public static function getPhotosIsLoaded():Boolean {
		return PHOTOSISLOADED;
	}
	public static function getPhotosArray():Array {
		return arrPhotos;
	}
	public static function setPhotosIsLoaded(lock:Boolean):Void {
		PHOTOSISLOADED = lock;
	}
	//***********************set new dynamic part**************
	public static function setDynamicPart():Void {
		if (!DynamicPart) {
			var dynObject:Object = new Object();
			dynObject.id = -1;
			dynObject.index = arrTemas.length;
			DynamivPartIndex = arrTemas.length;
			dynObject.name = _global.PSS_UI.lib_searchpart;
			arrTemas.push(dynObject);
			//arrAlbums.push(new Array(4));
			//DynamicPart = true;
		}
	}
	public static function setDynamicAlbums(arrAlb:Array, leftMenu:MovieClip):Void {
		arrAlbums[DynamivPartIndex] = arrAlb;
		var LeftMenu:MovieClip = leftMenu;
		// rebuil all left menu
		BrowserControler.rebuildLeftMenu();
		LeftMenu.setSearchLabel();
		LeftMenu.openPartSubMenu(DynamivPartIndex, -1);
	}
	// *****************************************************Slide Show XML
	//************************************LOAD PHOTOS XML*******************************
	public static function loadPhotosXMLSlide(partID:Number, albumID:Number):Void {
		
		//**************************SEARCH PARTAND SUB PART INDEX BY ID****************
		var partIndex:Number = getPartIndexByID(arrTemas, partID);
		var subpartIndex:Number = getAlbumIndexByID(arrAlbums, albumID, partIndex);
		//look sort for this subpart
		var tempSubPartsArr:Array = arrAlbums[partIndex];
		var tempSubObject:Object = tempSubPartsArr[subpartIndex];
		var SubPartSort:String = tempSubObject.sort;
		//********END************SEARCH PARTAND SUB PART INDEX BY ID****************
		SlidePIsLoaded = false;
		var mwidth:Number;
		var mheight:Number;
		var p_id:Number = partID;
		var a_id:Number = albumID;
		var sort:String;
		var photoCount:Number;
		var childCount:Number;
		SlidePhotosArray = new Array();
		var photosXML:XML = new XML();
		var xmlNode:XMLNode;
		photosXML.ignoreWhite = true;
		photosXML.onLoad = function(success:Boolean):Void  {
			if (success && photosXML.status == 0) {
				// define same attributes for photos
				sort = sort=SubPartSort;
				//photosXML.firstChild.attributes.sort;
				a_id = Number(photosXML.firstChild.attributes.id);
				mwidth = Number(photosXML.firstChild.attributes.mwidth);
				mheight = Number(photosXML.firstChild.attributes.mheight);
				//************************look photos********************
				photoCount = photosXML.firstChild.childNodes.length;
				for (var i = 0; i<photoCount; i++) {
					// set photo data 
					var photoObject:Object = new Object();
					photoObject.sort = sort;
					photoObject.a_id = a_id;
					photoObject.p_id = p_id;
					photoObject.mwidth = mwidth;
					photoObject.mheight = mheight;
					//return values
					xmlNode = photosXML.firstChild.childNodes[i];
					childCount = xmlNode.childNodes.length;
					for (var c = 0; c<childCount; c++) {
						photoObject[xmlNode.childNodes[c].nodeName] = xmlNode.childNodes[c].firstChild.nodeValue;
					}
					// set photo object to photo array
					SlidePhotosArray[i] = photoObject;
				}
				//******************SORT***********************
				if (sort == "DESC") {
					SlidePhotosArray.sortOn("id", Array.DESCENDING);
					SlidePhotosArray.reverse();
				} else {
					//SlidePhotosArray.sortOn("id", Array.NUMERIC);
				}
				//**end*************SORT***********************                                 
				SlidePIsLoaded = true;
			} else {
				SlidePIsLoaded = true;
			}
			CallbackMetod.apply(CallBackObject);
		};
		photosXML.load(pathToPartXML+partID+"/"+albumID+"/photos.xml");
		//*********************return tag values***********************
	}
	public static function getPhotosArraySlide():Array {
		return SlidePhotosArray;
	}
	public static function getPhotosIsLoadedSlide():Boolean {
		return SlidePIsLoaded;
	}
	//***********************search index from array by id**************
	private static function getPartIndexByID(arr:Array, searchID:Number):Number {
		var arrCount:Number = arr.length;
		for (var i = 0; i<arrCount; i++) {
			var tempObject:Object = arr[i];
			if (tempObject.id == searchID) {
				//PartObject = tempObject;
				return i;
			}
		}
		return -1;
	}
	private static function getAlbumIndexByID(alarr:Array, searchID:Number, partIndex:Number):Number {
		var albArray:Array = alarr[partIndex];
		var countsAlbums:Number = albArray.length;
		for (var i = 0; i<countsAlbums; i++) {
			var tempObject:Object = albArray[i];
			if (tempObject.id == searchID) {
				//AlbumObject = tempObject;
				return i;
			}
		}
		return -1;
	}
	//**********************C ALL BACK***********************
	public static function setCalBackAction(callM:Function, callObj:Object):Void {
		CallBackObject = callObj;
		CallbackMetod = callM;
	}
	//*********end slass***************************
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -