Revision: 54384
Updated Code
at December 23, 2011 23:13 by burnandbass
Updated Code
/* Author : Chrysto Dimchev ( burnandbass [at] gmail [.] com ) */ package { import flash.display.MovieClip; import flash.display.DisplayObject; import flash.display.Loader; import flash.display.LoaderInfo; import flash.events.EventDispatcher; import flash.events.Event; import flash.events.ProgressEvent; import flash.events.IOErrorEvent; import flash.net.URLRequest; import flash.utils.Dictionary; import flash.system.System; public class ChromeLoader extends EventDispatcher { private static var _content:Array = []; private static var _contentNames:Dictionary = new Dictionary(true); private var _loadersCompleted:Number = 0; private var _loaders:Array = []; private var _loaderNames:Array = []; private var _maxTries:Number = 0; private var _site:String = ""; private var _backupUrl:String = ""; private var _finished:Boolean = false; /* CONSTRCTOR pass params: @site --> url to prepend the loaders (expl: "http://site.com/images") @backupURL --> backup url, the loader will try to load the same picture, but with this string instead ot @site (expl: http://sitebackup.com/images) */ public function ChromeLoader(site:String = null, backupURL:String = null):void { if(site){ _site = site } if(backupURL){ _backupUrl = backupURL } } //// PUBLIC //load images/MovieClips, pass array of items to load public function loadContents(_items:Array):void{ for(var i:Number = 0; i< _items.length; i++){ _loaderNames.push( _items[i] ); } loadContent(_loaderNames[_loadersCompleted]); } //returns loader for given ID public function getLoader(_contentID:Number):Loader{ if(_loaders[_contentID]){ return _loaders[_contentID]; } else { trace("[ChromeLoader: ] loader by this ID not found!"); return null; //return new MovieClip(); //uncomment if you don't want to get RuntimeError } } //return movie clip (avm1/avm2) for given ID public function getMovieClip(_clipID:Number):MovieClip{ if(_loaders[_clipID]){ return _loaders[_clipID].content as MovieClip } else { trace("[ChromeLoader: ] MovieClip by this ID not found!"); return null; //return new MovieClip(); //uncomment if you don't want to get RuntimeError } } //Unloads the loaders, clears the static holders public function clear():void{ try{ _content.splice(0, _content.length); //clean the dictionary, otherwise this may conflict on reload for(var i:Number = 0; i< _loaderNames.length; i++){ delete( _contentNames[_loaderNames[i]] ) } //clean the loaders for each(var loader:Loader in _loaders){ //1 || removes all listeners loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, onComplete); loader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, onError); loader.contentLoaderInfo.removeEventListener(IOErrorEvent.NETWORK_ERROR, onError); //2 || removes it from stage if (loader.parent) { loader.parent.removeChild(loader); } //3 || unload content if (loader.hasOwnProperty("unloadAndStop")) { //fp10 loader.unloadAndStop(true); } else { loader.unload(); } //removes it from memory for all loader = null; } System.gc(); } catch(error:Error){ trace("[ChromeLoader error on destroy: ] " + error.message); } } //// PRIVATE private function loadContent(_cleanUrl:String):void{ _maxTries = 0; var contentLoader:Loader = new Loader(); contentLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete, false, 0, true); contentLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onError, false, 0, true); contentLoader.contentLoaderInfo.addEventListener(IOErrorEvent.NETWORK_ERROR, onError, false, 0, true); contentLoader.load( new URLRequest( _site + _cleanUrl )); trace("loading: " + String(_loadersCompleted+1) + " out of " + _loaderNames.length + " | " + _site + _cleanUrl); } private function onComplete(event:Event):void { _loaders.push(event.target.content.parent as Loader); _content.push( event.target.content.parent ); _contentNames[String(_loaderNames[_loadersCompleted])] = event.target.content.parent as Loader; _loadersCompleted++; if(_loadersCompleted < _loaderNames.length){ loadContent(_loaderNames[_loadersCompleted]); } else { _finished = true; dispatchEvent(new Event(Event.COMPLETE)); } } private function onError(event:Event):void{ _maxTries++; if(_maxTries < 3){ var contentLoader:Loader = new Loader(); contentLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete, false, 0, true); contentLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onError, false, 0, true); contentLoader.contentLoaderInfo.addEventListener(IOErrorEvent.NETWORK_ERROR, onError, false, 0, true); contentLoader.load( new URLRequest( _backupUrl + _loaderNames[_loadersCompleted] )); trace("[ERROR] on loading " + _loaderNames[_loadersCompleted] + " .Loading backup file: " + _backupUrl + _loaderNames[_loadersCompleted]); } else { trace("[ChromeLoader: ] on Error error - max tries reached! Load never completed!"); } //removes the listeners from failed loader, it is ready for Garbage Collection (event.target as LoaderInfo).removeEventListener(Event.COMPLETE, onComplete); (event.target as LoaderInfo).removeEventListener(IOErrorEvent.IO_ERROR, onError); (event.target as LoaderInfo).removeEventListener(IOErrorEvent.NETWORK_ERROR, onError); } //// PUBLIC STATIC //returns DisplayObject for given ID (the ID is the index position of the item in the loading names array) public static function getContent(_contentID:Number):DisplayObject{ if(_content[_contentID]){ return _content[_contentID]; } else { trace("[ChromeLoader: ] Content with this ID( " + _contentID + " )not found!"); return null; //return new MovieClip(); //uncomment if you don't want to get RuntimeError } } //get content for given name, just pass name from the array you loaded public static function getContentByName(_contentName:String):DisplayObject{ if(_contentNames[_contentName]){ return _contentNames[_contentName]; } else { trace("[ChromeLoader: ] Content with this NAME( " + _contentName + " )not found!"); return null; //return new MovieClip(); //uncomment if you don't want to get RuntimeError } } //// GETTERS / SETTERS //returns true if the loader have loaded all images public function get finished():Boolean{ return _finished; } }//end }
Revision: 54383
Updated Code
at December 23, 2011 23:01 by burnandbass
Updated Code
/* Author : Chrysto Dimchev ( burnandbass [at] gmail [.] com ) */ package { import flash.display.MovieClip; import flash.display.DisplayObject; import flash.display.Loader; import flash.display.LoaderInfo; import flash.events.EventDispatcher; import flash.events.Event; import flash.events.ProgressEvent; import flash.events.IOErrorEvent; import flash.net.URLRequest; import flash.utils.Dictionary; import flash.system.System; public class ChromeLoader extends EventDispatcher { private static var _content:Array = []; private static var _contentNames:Dictionary = new Dictionary(true); private var _loadersCompleted:Number = 0; private var _loaders:Array = []; private var _loaderNames:Array = []; private var _maxTries:Number = 0; private var _site:String = ""; private var _backupUrl:String = ""; /* CONSTRCTOR pass params: @site --> url to prepend the loaders (expl: "http://site.com/images") @backupURL --> backup url, the loader will try to load the same picture, but with this string instead ot @site (expl: http://sitebackup.com/images) */ public function ChromeLoader(site:String = null, backupURL:String = null):void { if(site){ _site = site } if(backupURL){ _backupUrl = backupURL } } //// PUBLIC //load images/MovieClips, pass array of items to load public function loadContents(_items:Array):void{ for(var i:Number = 0; i< _items.length; i++){ _loaderNames.push( _items[i] ); } loadContent(_loaderNames[_loadersCompleted]); } //returns loader for given ID public function getLoader(_contentID:Number):Loader{ if(_loaders[_contentID]){ return _loaders[_contentID]; } else { trace("[ChromeLoader: ] loader by this ID not found!"); return null; } } //return movie clip (avm1/avm2) for given ID public function getMovieClip(_clipID:Number):MovieClip{ if(_loaders[_clipID]){ return _loaders[_clipID].content as MovieClip } else { trace("[ChromeLoader: ] MovieClip by this ID not found!"); return null; } } //Unloads the loaders, clears the static holders public function clear():void{ try{ _content.splice(0, _content.length); //clean the dictionary, otherwise this may conflict on reload for(var i:Number = 0; i< _loaderNames.length; i++){ delete( _contentNames[_loaderNames[i]] ) } //clean the loaders for each(var loader:Loader in _loaders){ //1 || removes all listeners loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, onComplete); loader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, onError); loader.contentLoaderInfo.removeEventListener(IOErrorEvent.NETWORK_ERROR, onError); //2 || removes it from stage if (loader.parent) { loader.parent.removeChild(loader); } //3 || unload content if (loader.hasOwnProperty("unloadAndStop")) { //fp10 loader.unloadAndStop(true); } else { loader.unload(); } //removes it from memory for all loader = null; } System.gc(); } catch(error:Error){ trace("[ChromeLoader error on destroy: ] " + error.message); } } //// PRIVATE private function loadContent(_cleanUrl:String):void{ _maxTries = 0; var contentLoader:Loader = new Loader(); contentLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete, false, 0, true); contentLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onError, false, 0, true); contentLoader.contentLoaderInfo.addEventListener(IOErrorEvent.NETWORK_ERROR, onError, false, 0, true); contentLoader.load( new URLRequest( _site + _cleanUrl )); trace("loading: " + String(_loadersCompleted+1) + " out of " + _loaderNames.length + " | " + _site + _cleanUrl); } private function onComplete(event:Event):void { _loaders.push(event.target.content.parent as Loader); _content.push( event.target.content.parent ); _contentNames[String(_loaderNames[_loadersCompleted])] = event.target.content.parent as Loader; _loadersCompleted++; if(_loadersCompleted < _loaderNames.length){ loadContent(_loaderNames[_loadersCompleted]); } else { dispatchEvent(new Event(Event.COMPLETE)); } } private function onError(event:Event):void{ _maxTries++; if(_maxTries < 3){ var contentLoader:Loader = new Loader(); contentLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete, false, 0, true); contentLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onError, false, 0, true); contentLoader.contentLoaderInfo.addEventListener(IOErrorEvent.NETWORK_ERROR, onError, false, 0, true); contentLoader.load( new URLRequest( _backupUrl + _loaderNames[_loadersCompleted] )); trace("[ERROR] on loading " + _loaderNames[_loadersCompleted] + " .Loading backup file: " + _backupUrl + _loaderNames[_loadersCompleted]); } else { trace("[ChromeLoader: ] on Error error - max tries reached! Load never completed!"); } //removes the listeners from failed loader, it is ready for Garbage Collection (event.target as LoaderInfo).removeEventListener(Event.COMPLETE, onComplete); (event.target as LoaderInfo).removeEventListener(IOErrorEvent.IO_ERROR, onError); (event.target as LoaderInfo).removeEventListener(IOErrorEvent.NETWORK_ERROR, onError); } //// PUBLIC STATIC //returns DisplayObject for given ID (the ID is the index position of the item in the loading names array) public static function getContent(_contentID:Number):DisplayObject{ if(_content[_contentID]){ return _content[_contentID]; } else { trace("[ChromeLoader: ] Content with this ID( " + _contentID + " )not found!"); return null; //return new MovieClip(); //uncomment if you don't want to get RuntimeError } } //get content for given name, just pass name from the array you loaded public static function getContentByName(_contentName:String):DisplayObject{ if(_contentNames[_contentName]){ return _contentNames[_contentName]; } else { trace("[ChromeLoader: ] Content with this NAME( " + _contentName + " )not found!"); return null; //return new MovieClip(); //uncomment if you don't want to get RuntimeError } } }//end }
Revision: 54382
Updated Code
at December 23, 2011 22:36 by burnandbass
Updated Code
/* Author : Chrysto Dimchev ( burnandbass [at] gmail [.] com ) */ package { import flash.display.MovieClip; import flash.display.DisplayObject; import flash.display.Loader; import flash.display.LoaderInfo; import flash.events.EventDispatcher; import flash.events.Event; import flash.events.ProgressEvent; import flash.events.IOErrorEvent; import flash.net.URLRequest; import flash.utils.Dictionary; import flash.system.System; public class ChromeLoader extends EventDispatcher { private static var _content:Array = []; private static var _contentNames:Dictionary = new Dictionary(true); private var _loadersCompleted:Number = 0; private var _loaders:Array = []; private var _loaderNames:Array = []; private var _maxTries:Number = 0; private var _site:String = ""; private var _backupUrl:String = ""; /* CONSTRCTOR pass params: @site --> url to prepend the loaders (expl: "http://site.com/images") @backupURL --> backup url, the loader will try to load the same picture, but with this string instead ot @site (expl: http://sitebackup.com/images) */ public function ChromeLoader(site:String = null, backupURL:String = null):void { if(site){ _site = site } if(backupURL){ _backupUrl = backupURL } } //// PUBLIC //load images/MovieClips, pass array of items to load public function loadContents(_items:Array):void{ for(var i:Number = 0; i< _items.length; i++){ _loaderNames.push( _items[i] ); } loadContent(_loaderNames[_loadersCompleted]); } //returns loader for given ID public function getLoader(_contentID:Number):Loader{ if(_loaders[_contentID]){ return _loaders[_contentID]; } else { trace("[ChromeLoader: ] loader by this ID not found!"); return null; } } //return movie clip (avm1/avm2) for given ID public function getMovieClip(_clipID:Number):MovieClip{ if(_loaders[_clipID]){ return _loaders[_clipID].content as MovieClip } else { trace("[ChromeLoader: ] MovieClip by this ID not found!"); return null; } } //Unloads the loaders, clears the static holders public function clear():void{ try{ _content.splice(0, _content.length); //clean the dictionary, otherwise this may conflict on reload for(var i:Number = 0; i< _loaderNames.length; i++){ delete( _contentNames[_loaderNames[i]] ) } //clean the loaders for each(var loader:Loader in _loaders){ //1 || removes all listeners loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, onComplete); loader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, onError); loader.contentLoaderInfo.removeEventListener(IOErrorEvent.NETWORK_ERROR, onError); //2 || removes it from stage if (loader.parent) { loader.parent.removeChild(loader); } //3 || unload content if (loader.hasOwnProperty("unloadAndStop")) { //fp10 loader.unloadAndStop(true); } else { loader.unload(); } //removes it from memory for all loader = null; } System.gc(); } catch(error:Error){ trace("[ChromeLoader error on destroy: ] " + error.message); } } //// PRIVATE private function loadContent(_cleanUrl:String):void{ _maxTries = 0; var contentLoader:Loader = new Loader(); contentLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete, false, 0, true); contentLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onError, false, 0, true); contentLoader.contentLoaderInfo.addEventListener(IOErrorEvent.NETWORK_ERROR, onError, false, 0, true); contentLoader.load( new URLRequest( _site + _cleanUrl )); trace("loading: " + String(_loadersCompleted+1) + " out of " + _loaderNames.length + " | " + _site + _cleanUrl); } private function onComplete(event:Event):void { _loaders.push(event.target.content.parent as Loader); _content.push( event.target.content.parent ); _contentNames[String(_loaderNames[_loadersCompleted])] = event.target.content.parent as Loader; _loadersCompleted ++; if(_loadersCompleted < _loaderNames.length){ loadContent(_loaderNames[_loadersCompleted]); } else { dispatchEvent(new Event(Event.COMPLETE)); } } private function onError(event:Event):void{ _maxTries++; if(_maxTries < 3){ var contentLoader:Loader = new Loader(); contentLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete, false, 0, true); contentLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onError, false, 0, true); contentLoader.contentLoaderInfo.addEventListener(IOErrorEvent.NETWORK_ERROR, onError, false, 0, true); contentLoader.load( new URLRequest( _backupUrl + _loaderNames[_loadersCompleted] )); trace("[ERROR] on loading " + _loaderNames[_loadersCompleted] + " .Loading backup file: " + _backupUrl + _loaderNames[_loadersCompleted]); } else { trace("[ChromeLoader: ] on Error error - max tries reached! Load never completed!"); } (event.target as LoaderInfo).removeEventListener(Event.COMPLETE, onComplete); (event.target as LoaderInfo).removeEventListener(IOErrorEvent.IO_ERROR, onError); (event.target as LoaderInfo).removeEventListener(IOErrorEvent.NETWORK_ERROR, onError); } //// PUBLIC STATIC //returns DisplayObject for given ID (the ID is the index position of the item in the loading names array) public static function getContent(_contentID:Number):DisplayObject{ if(_content[_contentID]){ return _content[_contentID]; } else { trace("[ChromeLoader: ] Content by this ID not found!"); return null; } } //get content for given name, just pass name from the array you loaded public static function getContentByName(_contentName:String):DisplayObject{ if(_contentNames[_contentName]){ return _contentNames[_contentName]; } else { trace("[ChromeLoader: ] Content by this NAME not found!"); return null; } } }//end }
Revision: 54381
Updated Code
at December 23, 2011 22:11 by burnandbass
Updated Code
/* Author : Chrysto Dimchev ( burnandbass [at] gmail [.] com ) */ package { import flash.display.MovieClip; import flash.display.DisplayObject; import flash.display.Loader; import flash.events.EventDispatcher; import flash.events.Event; import flash.events.ProgressEvent; import flash.events.IOErrorEvent; import flash.net.URLRequest; import flash.utils.Dictionary; import flash.system.System; public class ChromeLoader extends EventDispatcher { private static var _content:Array = []; private static var _contentNames:Dictionary = new Dictionary(true); private var _loadersCompleted:Number = 0; private var _loaders:Array = []; private var _loaderNames:Array = []; private var _maxTries:Number = 0; private var _site:String = ""; private var _backupUrl:String = ""; /* CONSTRCTOR pass params: @site --> url to prepend the loaders (expl: "http://site.com/images") @backupURL --> backup url, the loader will try to load the same picture, but with this string instead ot @site (expl: http://sitebackup.com/images) */ public function ChromeLoader(site:String = null, backupURL:String = null):void { if(site){ _site = site } if(backupURL){ _backupUrl = backupURL } } //// PUBLIC //load images/MovieClips, pass array of items to load public function loadContents(_items:Array):void{ for(var i:Number = 0; i< _items.length; i++){ _loaderNames.push( _items[i] ); } loadContent(_loaderNames[_loadersCompleted]); } //returns loader for given ID public function getLoader(_contentID:Number):Loader{ if(_loaders[_contentID]){ return _loaders[_contentID]; } else { trace("[ChromeLoader: ] loader by this ID not found!"); return null; } } //return movie clip (avm1/avm2) for given ID public function getMovieClip(_clipID:Number):MovieClip{ if(_loaders[_clipID]){ return _loaders[_clipID].content as MovieClip } else { trace("[ChromeLoader: ] MovieClip by this ID not found!"); return null; } } //Unloads the loaders, clears the static holders public function clear():void{ try{ _content.splice(0, _content.length); //clean the dictionary, otherwise this may conflict on reload for(var i:Number = 0; i< _loaderNames.length; i++){ delete( _contentNames[_loaderNames[i]] ) } //clean the loaders for each(var loader:Loader in _loaders){ //1 loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, onComplete); loader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, onError); loader.contentLoaderInfo.removeEventListener(IOErrorEvent.NETWORK_ERROR, onError); //2 if (loader.parent) { loader.parent.removeChild(loader); } //3 if (loader.hasOwnProperty("unloadAndStop")) { //fp10 loader.unloadAndStop(true); } else { loader.unload(); } } System.gc(); } catch(error:Error){ trace("[ChromeLoader error on destroy: ] " + error.message); } } //// PRIVATE private function loadContent(_cleanUrl:String):void{ _maxTries = 0; var contentLoader:Loader = new Loader(); contentLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete, false, 0, true); contentLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onError, false, 0, true); contentLoader.contentLoaderInfo.addEventListener(IOErrorEvent.NETWORK_ERROR, onError, false, 0, true); contentLoader.load( new URLRequest( _site + _cleanUrl )); //trace("loading: " + String(_loadersCompleted+1) + " out of " + _loaderNames.length + " | " + _site + _cleanUrl); } private function onComplete(event:Event):void { _loaders.push(event.target.content.parent as Loader); _content.push( event.target.content.parent ); _contentNames[String(_loaderNames[_loadersCompleted])] = event.target.content.parent as Loader; _loadersCompleted ++; if(_loadersCompleted < _loaderNames.length){ loadContent(_loaderNames[_loadersCompleted]); } else { dispatchEvent(new Event(Event.COMPLETE)); } } private function onError(event:Event):void{ _maxTries++; if(_maxTries < 3){ var contentLoader:Loader = new Loader(); contentLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete, false, 0, true); contentLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onError, false, 0, true); contentLoader.contentLoaderInfo.addEventListener(IOErrorEvent.NETWORK_ERROR, onError, false, 0, true); contentLoader.load( new URLRequest( _backupUrl + _loaderNames[_loadersCompleted] )); trace("[ERROR] on loading " + _loaderNames[_loadersCompleted] + " .Loading backup file: " + _backupUrl + _loaderNames[_loadersCompleted]); } else { trace("[ChromeLoader: ] on Error error - max tries reached! Load never completed!"); } } //// PUBLIC STATIC //returns DisplayObject for given ID (the ID is the index position of the item in the loading names array) public static function getContent(_contentID:Number):DisplayObject{ if(_content[_contentID]){ return _content[_contentID]; } else { trace("[ChromeLoader: ] Content by this ID not found!"); return null; } } //get content for given name, just pass name from the array you loaded public static function getContentByName(_contentName:String):DisplayObject{ if(_contentNames[_contentName]){ return _contentNames[_contentName]; } else { trace("[ChromeLoader: ] Content by this NAME not found!"); return null; } } }//end }
Revision: 54380
Updated Code
at December 23, 2011 20:46 by burnandbass
Updated Code
package { import flash.events.EventDispatcher; import flash.events.Event; import flash.events.ProgressEvent; import flash.events.IOErrorEvent; import flash.net.URLRequest; import flash.display.Loader; import flash.display.DisplayObject; import flash.display.MovieClip; import flash.utils.Dictionary; public class ChromeLoader extends EventDispatcher { private static var _content:Array = []; private static var _contentNames:Dictionary = new Dictionary(true); private var _loadersCompleted:Number = 0; private var _loaders:Array = []; private var _loaderNames:Array = []; private var _maxTries:Number = 0; private var _site:String = ""; private var _backupUrl:String = ""; public function ChromeLoader(site:String = null, backupURL:String = null):void { if(site){ _site = site } if(backupURL){ _backupUrl = backupURL } } //// PUBLIC public function loadContents(_items:Array):void{ for(var i:Number = 0; i< _items.length; i++){ _loaderNames.push( _items[i] ); } loadContent(_loaderNames[_loadersCompleted]); } public function getLoader(_contentID:Number):Loader{ if(_loaders[_contentID]){ return _loaders[_contentID]; } else { trace("[ChromeLoader: ] loader by this ID not found!"); return null; } } public function getMovieClip(_clipID:Number):MovieClip{ if(_loaders[_clipID]){ return _loaders[_clipID].content as MovieClip } else { trace("[ChromeLoader: ] MovieClip by this ID not found!"); return null; } } public function clear():void{ try{ _content.splice(0, _content.length); //clean the dictionary, otherwise this may conflict on reload for(var i:Number = 0; i< _loaderNames.length; i++){ delete( _contentNames[_loaderNames[i]] ) } //clean the loaders for each(var loader:Loader in _loaders){ loader.unloadAndStop(true); } } catch(error:Error){ trace("[ChromeLoader error on destroy: ] " + error.message); } } //// PRIVATE private function loadContent(_cleanUrl:String):void{ _maxTries = 0; var contentLoader:Loader = new Loader(); contentLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete); contentLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onError); contentLoader.contentLoaderInfo.addEventListener(IOErrorEvent.NETWORK_ERROR, onError); trace("Loading: " + _site + _cleanUrl); contentLoader.load( new URLRequest( _site + _cleanUrl )); } private function onComplete(event:Event):void { _loaders.push(event.target.content.parent as Loader); _content.push( event.target.content.parent ); _contentNames[String(_loaderNames[_loadersCompleted])] = event.target.content.parent as Loader; _loadersCompleted ++; if(_loadersCompleted < _loaderNames.length){ loadContent(_loaderNames[_loadersCompleted]); } else { dispatchEvent(new Event(Event.COMPLETE)); } } private function onError(event:Event):void{ _maxTries++; if(_maxTries < 3){ var contentLoader:Loader = new Loader(); contentLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete); contentLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onError); contentLoader.contentLoaderInfo.addEventListener(IOErrorEvent.NETWORK_ERROR, onError); contentLoader.load( new URLRequest( _backupUrl + _loaderNames[_loadersCompleted] )); trace("[ERROR] on loading " + _loaderNames[_loadersCompleted] + " .Loading backup file: " + _backupUrl + _loaderNames[_loadersCompleted]); } else { trace("[ChromeLoader: ] on Error error - max tries reached! Load never completed!"); } } //// PUBLIC STATIC public static function getContent(_contentID:Number):DisplayObject{ if(_content[_contentID]){ return _content[_contentID]; } else { trace("[ChromeLoader: ] Content by this ID not found!"); return null; } } public static function getContentByName(_contentName:String):DisplayObject{ if(_contentNames[_contentName]){ return _contentNames[_contentName]; } else { trace("[ChromeLoader: ] Content by this NAME not found!"); return null; } } }//end }
Revision: 54379
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at December 21, 2011 23:02 by burnandbass
Initial Code
package { import flash.events.EventDispatcher; import flash.events.Event; import flash.events.ProgressEvent; import flash.events.IOErrorEvent; import flash.net.URLRequest; import flash.display.Loader; import flash.display.DisplayObject; import flash.display.MovieClip; public class ChromeLoader extends EventDispatcher { private static var _content:Array = []; private var _loadersCompleted:Number = 0; private var _loaders:Array = []; private var _loaderNames:Array = []; private var _maxTries:Number = 0; private var _site:String = ""; private var _backupUrl:String = ""; public function ChromeLoader(site:String = null, backupURL:String = null):void { if(site){ _site = site } if(backupURL){ _backupUrl = backupURL } } //// PUBLIC public function loadContents(_items:Array):void{ for(var i:Number = 0; i< _items.length; i++){ _loaderNames.push( _items[i] ); } loadContent(_loaderNames[_loadersCompleted]); } public function getLoader(_contentID:Number):Loader{ if(_loaders[_contentID]){ return _loaders[_contentID]; } else { trace("[ChromeLoader: ] loader by this ID not found!"); return null; } } public function getMovieClip(_clipID:Number):MovieClip{ if(_loaders[_clipID]){ return _loaders[_clipID].content as MovieClip } else { trace("[ChromeLoader: ] MovieClip by this ID not found!"); return null; } } public function clear():void{ try{ _content.splice(0, _content.length); for each(var loader:Loader in _loaders){ loader.unloadAndStop(true); } } catch(error:Error){ trace("[ChromeLoader error on destroy: ] " + error.message); } } //// PRIVATE private function loadContent(_cleanUrl:String):void{ _maxTries = 0; var contentLoader:Loader = new Loader(); contentLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete); contentLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onError); contentLoader.contentLoaderInfo.addEventListener(IOErrorEvent.NETWORK_ERROR, onError); trace("Loading: " + _site + _cleanUrl); contentLoader.load( new URLRequest( _site + _cleanUrl )); } private function onComplete(event:Event):void { _loaders.push(event.target.content.parent as Loader); _content.push( event.target.content.parent ); _loadersCompleted ++; if(_loadersCompleted < _loaderNames.length){ loadContent(_loaderNames[_loadersCompleted]); } else { dispatchEvent(new Event(Event.COMPLETE)); } } private function onError(event:Event):void{ _maxTries++; if(_maxTries < 3){ var contentLoader:Loader = new Loader(); contentLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete); contentLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onError); contentLoader.contentLoaderInfo.addEventListener(IOErrorEvent.NETWORK_ERROR, onError); contentLoader.load( new URLRequest( _backupUrl + _loaderNames[_loadersCompleted] )); trace("Loading backup file: " + _backupUrl + _loaderNames[_loadersCompleted]); } else { trace("[ChromeLoader: ] on Error error - max tries reached! Load never completed!"); } } //// PUBLIC STATIC public static function getContent(_contentID:Number):DisplayObject{ if(_content[_contentID]){ return _content[_contentID]; } else { trace("[ChromeLoader: ] Content by this ID not found!"); return null; } } }//end }
Initial URL
Initial Description
This is VERY BASIC loading class, the idea is to load array of images and when they're loaded you can retrve them via ChromeLoader.getContent() method, just pass ID. In the constructor you got prepend url (for example images/) and "backup" (example "/backup" ). This will be used if the loader... The names of the functions are self-exaplanary, this is perfect solution for lightwave banners. v 1.1 - GarbageCollection added
Initial Title
LightLoader - load array of images, GC, bug fixes, 1.2k compressed
Initial Tags
Initial Language
ActionScript 3