2013-06-13 56 views
1

我有Flex應用程序,我想在運行時從文件加載屬性。
例如:我想讓電子郵件地址給應用程序管理員,並且我不想在每次管理員更改時重建應用程序。我想在屬性文件中進行更改,應用程序應該加載更新後的值。在Flex中運行時從文件加載屬性

我發現在運行時加載本地化的教程,但這不是我所需要的。
任何幫助(和示例代碼)將不勝感激。

PS。
如果這有什麼不同,我的應用程序將編譯爲Flex 3.5

+0

只要把JSON或XML文件的服務器上,下載並解析它。你有特定的問題嗎? – RIAstar

+0

爲什麼我需要下載文件?還可以自己解析它?我想把它放在應用程序中(像Spring屬性文件) –

+1

一個Flex應用程序在客戶端機器上運行(不同於經典的 - 可能是基於Spring的web應用程序),所以在運行時讀取屬性的唯一方法是讓Flex應用程序下載客戶機上的屬性文件並讀取它。 – RIAstar

回答

1

您需要使用URLLoader對象加載外部屬性文件,然後解析屬性。對於解析,您可以使用StringUtils.parseProperties方法從AS3Commons-Lang

var urlLoader:URLLoader = new URLLoader(); 
urlLoader.addEventListener(Event.COMPLETE, urlLoaderCompleteHandler); 

var request:URLRequest = new URLRequest(url); 
urlLoader.load(request); 

private function urlLoaderCompleteHandler(event:Event):void { 
    var properties:Object = StringUtils.parseProperties(urlLoader.data); 
} 
+0

不知道你有一個.properties解析器在那裏:很高興知道。 – RIAstar

3

爲了補充@克里斯托夫的回答是:有本地做解析(即不需要第三方庫)的兩種方式,但它們都沒有解析.properties文件。

JSON

警告:僅適用本身作爲Flash播放器11)

寫JSON格式的配置文件:

{ 
    "myProperty": "myValue", 
    "otherProp": "someValue" 
} 

加載同樣的方式克里斯托夫介紹和像這樣的句柄:

private function urlLoaderCompleteHandler(event:Event):void { 
    var properties:Object = JSON.parse(urlLoader.data); 
    trace(properties.myProperty); //myValue 
} 

XML

寫您的配置文件中的XML格式:

<config> 
    <myProperty>myValue</myProperty> 
    <otherProp value="someValue"/> 
</config> 

加載同樣的方式克里斯托夫描述和處理這樣的:

private function urlLoaderCompleteHandler(event:Event):void { 
    var properties:XML= XML(urlLoader.data); 
    trace(properties.myProperty.text()); //myValue 
    trace([email protected]); //someValue 
}