2

我现在正在为学校做一个项目,我们正在尝试对其进行设置,以便它易于部署。它的 webapp 部分完全用 Adob​​e flex 编写。

但是,我们需要链接到代码中的某些文件/url,它们在不同的机器上是不同的。

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

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

如果我们不必为每个单独的部署重新编译,那就太好了……

提前致谢!

4

5 回答 5

1

查看appcorelib,文档将向您展示如何使用资产文件夹中的相对 URL:

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

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

于 2009-05-02T16:46:34.693 回答
1

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

于 2009-04-16T15:47:08.163 回答
0

You can pass in parameters into a SWF by adding FlashVars to the HTML that it's running from. FLashVars

于 2009-04-16T05:27:25.113 回答
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,您可以连接回加载服务器以获取资源列表。在大多数情况下,这应该是首选的解决方案。

于 2009-04-16T00:17:55.217 回答
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 与配置文件位于同一台服务器上,则您可能不需要它。此外,如您所见,此跨域策略允许来自所有域的访问,因此如果您非常关心安全性(对于学校项目可能并不重要),请阅读它们以了解如何配置。这是一篇好文章

此外,这里是一些示例 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" />
于 2009-04-17T14:28:27.613 回答