Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > Flex

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 29.09.2009, 12:48
Night_rainbow вне форума Посмотреть профиль Отправить личное сообщение для Night_rainbow Найти все сообщения от Night_rainbow
  № 1  
Ответить с цитированием
Night_rainbow

Регистрация: Sep 2009
Сообщений: 18
По умолчанию Загрузка файлов конфигурации

Доброго все времени суток!
Подскажите, пожалуйста, как кто осуществляет это дело. Речь идет о том, чтобы всяческие url загружать из xml-файла, лежащего на сервере. Я сделал это таким образом.

DataConstants.as - содержит все url. Получает их он с сервера в виде xml-файла посредством HttpService. Когда ответ от сервера приходит и все переменные проинициализированы, он диспатчит событие DOWNLOAD_COMPLETE.

Код AS3:
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.");
        }
    }
}
}
SessionObject.as - просто содержит ссылку на DataConstants. Он слушает событие DOWNLOAD_COMPLETE от DataSource и когда оно приходит, диспатчит ALL_DOWNLOAD_COMPLETE.

Код AS3:
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));
    }
}
}
MedDownloadProgressBar.as - он при получении события INIT_COMPLETE создает SessionObject, добавляет слушателя на событие ALL_DOWNLOAD_COMPLETE и вызывает у него метод init(). Когда получает событие ALL_DOWNLOAD_COMPLETE посылает Event.COMPLETE, информируя о том, что приложение загружено.

Код AS3:
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));
    }
 
 
 
}
}
После этого, доступ ко всем урл из флекса идет через SessioObject.dataConstants.НУЖНЫЙ_УРЛ.

Как Вы считаете, нормально ли создан этот механизм? Возможно, лучше как-то по другому?
Буду очень благодарен советам.


Последний раз редактировалось Night_rainbow; 29.09.2009 в 12:53.
Старый 29.09.2009, 14:06
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 2  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Ага, если вам нравится и если это работает. А время идет...
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 29.09.2009, 14:47
Night_rainbow вне форума Посмотреть профиль Отправить личное сообщение для Night_rainbow Найти все сообщения от Night_rainbow
  № 3  
Ответить с цитированием
Night_rainbow

Регистрация: Sep 2009
Сообщений: 18
Спасибо за отклик!

Цитата:
А время идет...
Что Вы имели ввиду?

Создать новую тему Ответ Часовой пояс GMT +4, время: 10:27.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 10:27.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.