import mx.utils.Delegate; class com.tonp.utils.LoadQueue { public var queue:Array; private var loader:Object; private var loading:Number = 0; private var error:Boolean = false; var percentLoaded:Number= 0 ; var percentItemLoaded:Number = 0 // /********* EVENTS *********/ // var onLoadItemStart:Function; var onLoadItemError:Function; var onLoadItemProgress:Function; var onLoadItemComplete:Function; var onTotalLoadComplete:Function; // var onLoadStart:Function; var onLoadProgress:Function; var onLoadComplete:Function; var onLoadError:Function; // /********* GETTERS *********/ // public function getTotalPercentageloaded() { return percentLoaded; } public function getItemPercentageloaded() { return percentItemLoaded; } public function getLoadedItems() { return loading; } public function getTotalItems() { return queue.length; } /*****************/ public function LoadQueue() { reset() } public function addItem(type, src, target,vars) { queue.push([type, src, target, vars]); } public function start() { error = false; loadItem(0); } public function loadItem(id) { percentItemLoaded = 0 switch (String(queue[id][0]).toUpperCase()) { case "SWF" : trace("SWF"); case "IMAGE" : loadImage(queue[id][1], queue[id][2], queue[id][3]); break; case "XML" : loadXML(queue[id][1], queue[id][2], queue[id][3]); break; case "SCREEN" : loadScreen(queue[id][1], queue[id][2], queue[id][3]); break; default: //console.error("LOAD QUEUE: Incorrect LoadType"); } } public function loadScreen(src, obj, vars){ var o = {}; if(src == ""){ obj.clearScreen(); } else { o.onLoadStart = Delegate.create(this, onLoadItemStart); o.onLoadError = Delegate.create(this, _onLoadItemError); o.onLoadProgress = Delegate.create(this, _onLoadProgress); o.onLoadInit = Delegate.create(this, _onLoadItemComplete); obj.addListener(o); obj.loadScreen(src,vars); } } public function loadImage(src, obj,vars) { var o = {}; trace ("LOAD IMAGE"+src+":"+obj); o.onLoadStart = Delegate.create(this, onLoadItemStart); o.onLoadError = Delegate.create(this, _onLoadItemError); o.onLoadProgress = Delegate.create(this, _onLoadProgress); //o.onLoadComplete = Delegate.create(this, _onLoadComplete); o.onLoadInit = Delegate.create(this, _onLoadItemComplete); loader = new MovieClipLoader(); loader.addListener(o); loader.loadClip(src, obj); } public function loadXML(src, obj) { onLoadItemStart(); obj.load(src); obj.onLoad = Delegate.create(this, _onLoadItemComplete); } private function _onLoadItemError() { error = true; } private function _onLoadComplete(){ // populate object vars //if(var i in queue[loading][3]){ // queue[loading][2][i] = queue[loading][3][i]; //} onTotalLoadComplete() } private function _onLoadItemComplete() { loading++; var s = String(queue[loading][0]).toUpperCase(); if (s == "XML") { if (!arguments[0]) { error = true; onLoadItemError(); } else { onLoadProgress(); onLoadItemComplete(); } } else { onLoadProgress(); onLoadItemComplete(); } if (loading