/** * DataAssets * Loads data. Duh * * @author Zeh Fernando * @version 1.0.0 * * 04 jun 07 (1.0.0) - First version */ /* Usage: DataAssets.loadXML("nome.xml", "nome"); --> DataAssets.getLoadedFactor("nome"); --> DataAssets.getLoadedFactor(); --> DataAssets.getAsset("nome")..... */ import zeh.loading.LoadingQueue; import zeh.conversion.XMLToObject; class zeh.loading.DataAssets { private static var ASSUMED_XML_SIZE:Number = 50000; // Assumed XML size when it's unkown private static var _assets:Object; // Loaded assets {.originalContent, .data, .url, .isLoaded} private static var loadingQueue:LoadingQueue; // ================================================================================================================ // INSTANCE functions --------------------------------------------------------------------------------------------- // Constructor public function DataAssets () { trace ("This is a static function and should not be instantiated"); } // ================================================================================================================ // STATIC functions ----------------------------------------------------------------------------------------------- // Initializes the asset collector public static function init(): Void { _assets = {}; loadingQueue = new LoadingQueue(); loadingQueue.setSlots(3); } // Adds a new MovieClip to the loading queue public static function addXML (p_url:String, p_name:String): Void { if (_assets == undefined) init(); var nXML:XML = new XML(); nXML.ignoreWhite = true; _assets[p_name] = {originalContent:nXML, data:null, url:p_url, isLoaded:false}; var myAssetData:Object = _assets[p_name]; // trace ("DataAssets :: started " + p_name); nXML.onLoad = function() { myAssetData.isLoaded = true; // trace ("DataAssets :: finished " + p_name); myAssetData.data = XMLToObject.convert(this); }; loadingQueue.addXML(nXML, p_url); loadingQueue.start(); } // Gets the % of loading public static function getLoadedFactor(p_name:String): Number { var tl:Number = 0; var tt:Number = 0; var i:String; var l:Number; var t:Number; for (i in _assets) { l = _assets[i].originalContent.getBytesLoaded(); t = _assets[i].originalContent.getBytesTotal(); if (t < 20 || t == undefined) { l = 0; t = ASSUMED_XML_SIZE; } if (!_assets[i].isLoaded) { // XML is not parsed if (l == t) l = t-1; } tl += l; tt += t; } return tl/tt; } // Finds an asset and returns its data public static function getAsset(p_name:String): Object { return _assets[p_name].data; } public static function getOriginalAssetContent(p_name:String): Object { return _assets[p_name].originalContent; } }