![]() |
|
||||||||||
|
|||||
|
Регистрация: Sep 2009
Сообщений: 18
|
Доброго все времени суток!
Подскажите, пожалуйста, как кто осуществляет это дело. Речь идет о том, чтобы всяческие url загружать из xml-файла, лежащего на сервере. Я сделал это таким образом. DataConstants.as - содержит все url. Получает их он с сервера в виде xml-файла посредством HttpService. Когда ответ от сервера приходит и все переменные проинициализированы, он диспатчит событие DOWNLOAD_COMPLETE. public class DataConstants extends EventDispatcher{ private var _confXML:XML; public var AMF_CONNECTION_URL:String; public var UPLOAD_CONNECTION_URL:String; public var UPLOAD_TEMP_CONNECTION_URL:String; public function DataConstants() { } public function init():void { if (!_confXML) { var request:HTTPService = new HTTPService(); request.url = "config/xml/net_connection_urls.xml"; request.resultFormat = "e4x"; // E4X for easy data access. request.contentType = "application/xml"; request.addEventListener(ResultEvent.RESULT, propertyReaderResultHandler); request.addEventListener(FaultEvent.FAULT, propertyReaderFaultHandler); request.send(); } } private function propertyReaderResultHandler(event:ResultEvent):void { _confXML = XML(event.result); AMF_CONNECTION_URL = _confXML.property.(name == "amfChanel").value; UPLOAD_CONNECTION_URL = _confXML.property.(name == "uploadHandler").value; UPLOAD_TEMP_CONNECTION_URL = _confXML.property.(name == "uploadTemp").value; dispatchEvent(new UtilsEvent(UtilsEvent.DOWNLOAD_COMPLETE)); } private function propertyReaderFaultHandler(event:FaultEvent):void { if(event){ Alert.show(event.fault.message, "Could not load properties XML file."); } } } } public class SessionObject extends EventDispatcher{ public function SessionObject() { } private static var _dataConstants:DataConstants; public function init():void{ _dataConstants = new DataConstants(); _dataConstants.addEventListener(UtilsEvent.DOWNLOAD_COMPLETE,handlerDownloadComplete); _dataConstants.init(); } public static function get dataConstants():DataConstants{ return _dataConstants; } private function handlerDownloadComplete(event:UtilsEvent):void{ dispatchEvent(new UtilsEvent(UtilsEvent.ALL_DOWNLOAD_COMPLETE)); } } } public class MedDownloadProgressBar extends DownloadProgressBar{ public function MedDownloadProgressBar() { super(); initializingLabel = "Initializing App..."; MINIMUM_DISPLAY_TIME = 2000; //loadResources(); } override protected function showDisplayForDownloading(elapsedTime:int, event:ProgressEvent):Boolean{ return true; } override protected function showDisplayForInit(elapsedTime:int, count:int):Boolean{ return true; } override public function set preloader(value:Sprite):void { value.addEventListener(ProgressEvent.PROGRESS, progressHandler); value.addEventListener(Event.COMPLETE, completeHandler); value.addEventListener(RSLEvent.RSL_PROGRESS, rslProgressHandler); value.addEventListener(RSLEvent.RSL_COMPLETE, rslCompleteHandler); value.addEventListener(RSLEvent.RSL_ERROR, rslErrorHandler); value.addEventListener(FlexEvent.INIT_PROGRESS, initProgressHandler); value.addEventListener(FlexEvent.INIT_COMPLETE, loadResources); } private function loadResources(event:Event):void{ var sess:SessionObject =new SessionObject(); sess.addEventListener(UtilsEvent.ALL_DOWNLOAD_COMPLETE,completeAll); sess.init(); } private function completeAll(event:Event):void{ dispatchEvent(new Event(Event.COMPLETE)); } } } Как Вы считаете, нормально ли создан этот механизм? Возможно, лучше как-то по другому? Буду очень благодарен советам. Последний раз редактировалось Night_rainbow; 29.09.2009 в 12:53. |
|
|||||
|
Регистрация: Sep 2009
Сообщений: 18
|
Спасибо за отклик!
![]() Цитата:
|
![]() |
![]() |
Часовой пояс GMT +4, время: 09:30. |
|
|
« Предыдущая тема | Следующая тема » |
|
|