2012-03-21 44 views
0

我的目標是有一個客戶端的外部文本文件的配置。我不想通過一個瘋狂的XML的東西,我只是想要它很容易改變。 我開始使用urlLoader,並能夠動態生成一個對象沒有問題。這是解析和設置對象屬性的函數。閃存AS3和外部文本配置文件

function onLoaded(e:Event):void//initializes the config 
{ 
var myString = String(e.target.data); 
//trace(e.target.data); 
//trace(myString); 
var propsArray:Array = myString.split("\n"); 


for (var i = 0; i < propsArray.length; i++){ 
    var thisLine:Array = propsArray[i].split("="); 
    var thisPropName:String = thisLine[0]; 
     thisPropName = thisPropName.replace(rex,''); 
    var thisPropValue:String = thisLine[1]; 
    thisPropValue = thisPropValue.replace(rex,''); 
trace("thePropName is: " + thisPropName); 
    trace("thePropValue is: " + thisPropValue); 
config[thisPropName] = thisPropValue; 
} 

}

文本文件只是看起來是這樣的:

網關=「HTTP://thePathto/theFile.php
敬酒=狗孃養的
計時器= 5000
xSpeed = 5.0

這樣的話,我可能只是把的AS3代碼一點點,我想配置什麼類型的東西,那麼我將不得不做的是類型config.timer和

var myTimer:Timer = new Timer(Number(config.timer)); 


我覺得問題是加載順序和範圍。 config.timer尚未創建,所以定時器無法訪問config.timer的值。

+1

請允許我建議'XML'會出奇比純文本更容易處理和管理 - 它也將只需要你最多幾個小時的教程充分了解。 – Marty 2012-03-22 00:28:45

+0

我知道的配置格式,這並不是真正的問題的一部分的討論,但也有很大的格式在那裏已經爲這一明確目的,具有優良的AS3吊裝工具。與JSON一樣,XML是一個很好的例子。 XML是內置於該語言中的,JSON是一個夢幻般的輕量級替代品。您可以使用出色的'as3corelib'加載JSON:https:// github。com/mikechambers/as3corelib – aaaidan 2012-03-22 22:18:22

+0

哦,下面是使用as3corelib加載和解碼JSON的一個很好的例子:http://kirill-poletaev.blogspot.co.nz/2011/02/working-with-json-and-as3-part -2.html – aaaidan 2012-03-22 22:38:33

回答

1

我想看看在這種性質的未來的項目中使用XML,但回答你的問題:

我認爲這個問題是加載順序和範圍。該​​尚未創建,因此定時器是無法訪問的​​的價值。

正確的,你需要將你的Timer方法onLoaded()內初始化,因爲數據將被異步接收的,而不是可用,直到發生這種情況。

-1

確定不是不久前,我創建了一個使用這個確切的概念的下載管理器。 下面的鏈接將帶您直接訪問網站,您可以下載完整的swf文件,包括我的源文件。也是這個網站是爲資源

http://ffiles.com/flash/web_applications_and_data/dynamic_download_manager_3529.html

下面一個不好的地方就是我的裝載機:

addEventListener(Event.ENTER_FRAME, update); 
var myLoader:URLLoader = new URLLoader(); 
myLoader.dataFormat = URLLoaderDataFormat.VARIABLES; 
myLoader.load(new URLRequest("settings.txt")); 
myLoader.addEventListener(Event.COMPLETE, onDataLoad); 

function onDataLoad(evt:Event) 
{ 

box1.text = evt.target.data.Id_1; 
box2.text = evt.target.data.Id_2; 
box3.text = evt.target.data.Id_3; 
box4.text = evt.target.data.Id_4; 
box5.text = evt.target.data.Id_5; 
} 

添加一些動態文本框上演並將其命名爲「BOX1,BOX2等...」 現在創建您的文本文件:

Id_1=this is what ever you want 
&Id_2=this is what ever you want 
&Id_3=this is what ever you want 
&Id_4=this is what ever you want 
&Id_5=this is what ever you want 

希望這會有所幫助。