如何从Flex中的配置文件中读取?

时间:2009-04-16 00:12:01

标签: flex mxml config

我正在为学校开展一个项目,我们正在设法让它易于部署。它的webapp部分完全用Adobe flex编写。

但是,我们需要链接到代码中的某些文件/网址,这些文件/网址在不同的计算机上是不同的。

例如,我的服务器可能使用8180作为端口,而其他人使用8080。 或者一个人正在使用Windows,因此文件路径将是C:/ ...而我的将是/ home /...

我们有什么方法可以将这些文件放入单独的配置文件中并在mxml文件中动态读取它们吗?

如果我们不必为每个单独的部署重新编译,那将是非常好的......

提前致谢!

5 个答案:

答案 0 :(得分:1)

您可以使用HTTPService加载相对于Flex应用程序SWF的位置的XML文件(或任何文本文件)。只需在应用程序启动时执行HTTPService,解析文件,并在任何需要的地方提供数据。

答案 1 :(得分:1)

结帐appcorelib,文档会向您展示如何使用资产文件夹中的相对网址:

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

如果xml和flex应用程序位于同一台服务器上,则无需担心跨域名。

答案 2 :(得分:0)

如果您已启用本地文件沙箱,则可以使用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,可以连接回加载服务器以获取资源列表。在大多数情况下,这应该是首选解决方案。

答案 3 :(得分:0)

您可以通过将FlashVars添加到运行它的HTML中来将参数传递到SWF中。 FLashVars

答案 4 :(得分:0)

我非常同意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与配置文件位于同一服务器上,则可能不需要此项。此外,正如您所看到的,此跨域策略允许从所有域进行访问,因此如果您非常关心安全性(对于学校项目可能不重要),请阅读它们以了解如何配置。这是一个很好的article

此外,这里有一些示例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" />
相关问题