package whirlpower.wploader { import flash.events.Event; import flash.events.EventDispatcher; import flash.events.ProgressEvent; public class WpXMLloader { private static var jobs :Array = []; private static var library :Array = []; private static var next :Function; // ロードを開始する public static function load( _next:Function ):Boolean { next = _next; if ( jobs.length > 0 ){ startJob(); return true; }else{ next(); return false; } } // ロードするURLを登録する public static function addUrl( _name:String, _url:String, _isUnicode:Boolean = true ):void { jobs.push( new XMLitem( _name, _url, _isUnicode ) ); } // 仕事を処理する private static function startJob( evt:Event = null ):void { if ( jobs.length > 0 ){ var job:XMLitem = jobs.shift(); job.addEventListener( XMLitem.LOAD_COMPLETE, onLoadcomplete ); job.load(); }else{ next(); } } // XMLのロード完了 XMLをライブラリへ保存する private static function onLoadcomplete( evt:Event = null ):void { evt.target.removeEventListener( XMLitem.LOAD_COMPLETE, onLoadcomplete ) library.push( evt.target ); startJob(); } // 指定の名前のXMLを取得する public static function getXmlByName( name:String ):XML { for each( var item:XMLitem in library ){ if ( item.name == name ) return item.xml; } return null; } // 指定の名前のXMLを削除する public static function deleteXmlByName( name:String ):Boolean { var length :int = library.length; for ( var i:int = 0; i < length; i++ ) { if ( library[i].name == name ) { library.splice( i, 1 ); return true; } } return false; } } }