2009-04-16 46 views
2

我現在正在爲學校開發一個項目,我們正在設法讓它易於部署。它的webapp部分完全用Adobe flex編寫。如何從Flex中的配置文件讀取數據?

但是,我們需要鏈接到不同機器上不同的代碼中的某些文件/網址。

例如,我的服務器可能使用8180作爲端口,而其他人使用8080. 或者一個人使用Windows,因此文件路徑將是C:/ ...而我的將是/ home/...

有沒有什麼辦法可以將這些文件放入單獨的配置文件中並在mxml文件中動態讀取它們?

這將是非常好的,如果我們沒有重新編譯爲每個單獨的部署......提前

謝謝!

回答

0

通過將FlashVars添加到運行的HTML中,可以將參數傳遞到SWF中。 FLashVars

+0

好主意,我忘了關於flashvars。 – 2009-04-16 10:16:58

1

您可以使用HTTPService加載位於相對於Flex應用程序SWF位置的XML文件(或任何文本文件)。只需在應用程序啓動時執行HTTPService,解析文件,並在需要的地方使數據可用。

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" /> 
1

退房appcorelib,該文檔將告訴你如何使用相對URL就像從一個資產的文件夾:

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

如果xml和flex應用程序位於同一臺服務器上,則不必擔心crossdomain。