Как мне прочитать файл конфигурации во Flex? - PullRequest
2 голосов
/ 16 апреля 2009

Я сейчас работаю над проектом для школы, и мы пытаемся настроить его так, чтобы его можно было легко развернуть. Часть веб-приложения полностью написана на Adobe flex.

Однако нам нужны ссылки на определенные файлы / ссылки в коде, которые различаются на разных машинах.

Например, мой сервер может использовать 8180 в качестве порта, в то время как кто-то другой использует 8080. Или один человек использует Windows, поэтому путь к файлу будет C: / ... в то время как мой будет /home/...

Есть ли способ поместить эти файлы в отдельный файл конфигурации и динамически читать их в файлах mxml?

Было бы здорово, если бы нам не приходилось перекомпилировать каждое отдельное развертывание ...

Заранее спасибо!

Ответы [ 5 ]

1 голос
/ 02 мая 2009

Извлеките appcorelib , в документах будет показано, как использовать относительный URL, например, из папки ресурсов:

loadXML("assets/xml/config.xml);

Не нужно беспокоиться о кросс-домене, если приложение xml и flex находится на одном сервере.

1 голос
/ 16 апреля 2009

Вы можете использовать HTTPService для загрузки XML-файла (или любого текстового файла), который находится в местоположении относительно SWF-приложения Flex. Просто запустите HTTPService при запуске приложения, проанализируйте файл и сделайте данные доступными там, где вам нужно.

0 голосов
/ 17 апреля 2009

Я полностью согласен с brd6644. Вам понадобится файл междоменной политики на сервере, где находятся файлы конфигурации. Просто скопируйте следующий XML-файл в файл с именем «crossdomain.xml» и поместите его в корневой каталог сервера, на котором находятся ваши файлы конфигурации.

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy 
  SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
  <allow-access-from domain="*" />
</cross-domain-policy>

Это может не понадобиться, если файл swf находится на том же сервере, что и файлы конфигурации. Кроме того, как вы можете видеть, эта междоменная политика разрешает доступ со всех доменов, поэтому, если вы очень заботитесь о безопасности (может быть, это не важно для школьного проекта), прочитайте их немного, чтобы узнать, как настроить. Вот хорошая статья

Также, вот пример кода HTTPService:

private function init():void{
     get_bands_service.url = yeswewillArtistsURL;
     get_bands_service.method = "GET";
     get_bands_service.addEventListener(FaultEvent.FAULT, onServiceFault);
     get_bands_service.requestTimeout = 20;
     get_bands_service.send();
}

<mx:HTTPService id="get_bands_service" result="parseBandsServiceResult();" useProxy="false" />
0 голосов
/ 16 апреля 2009

Вы можете передать параметры в SWF-файл, добавив FlashVars в HTML-код, из которого он выполняется. Flashvars

0 голосов
/ 16 апреля 2009

Если вы включили локальную файловую песочницу, вы можете использовать URLLoader для чтения локального файла:

http://livedocs.adobe.com/flex/201/html/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Book_Parts&file=05B_Security_176_04.html

Однако ваш SWF также должен быть локальным.

Если вы загружаете SWF-файл удаленно, вы можете снова подключиться к серверу загрузки для получения списка ресурсов. Это, вероятно, должно быть предпочтительным решением в большинстве случаев.

...