📄 menuxmlassembler.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 + -