2009-11-24 23 views
0

這可能是一個累贅的舊問題,但我還沒有找到一個好的答案。比如說,你有一個讀取xml文件的類來獲取諸如雜貨店商品,價格等信息。該類還允許你使用get()函數檢索有關雜貨店商品的信息。閱讀文件(AS3)並重復/ dyamically訪問數據

var grocery:GroceryStore = new GroceryStore(); //create a class that 
               //reads in xml about 
               //grocery items 

grocery.get("lettuce");      //get some data 

在這種情況下,我不斷地運行到問題,因爲的get()函數是在事件之前被稱爲是負載在XML文件中。將get()放在xml文件的onLoad事件中是沒有意義的,因爲我希望它可以重用並且是動態的。此外,AS3沒有wait()函數,所以我不能拖延,直到文件加載?有沒有人有關於如何讀取文件,然後能夠安全地動態和重複訪問數據的想法?希望這個例子和我的問題是足夠徹底的,如果不讓我知道。

感謝

+0

睡眠/等待,直到加載的文件是一個壞主意。沒有人喜歡沒有反應的應用程序。在數據加載時顯示進度條/加載屏幕**是一個好主意。構建一個等待XML onLoad的類並自動彈出一個加載屏幕。 – leepowers 2009-11-24 05:13:18

回答

1

您可以使用事件 - 偵聽要調度的complete事件。

下面的代碼添加到GroceryStore

//constructor or a load method 
var ldr:URLLoader = new URLLoader(); 
ldr.addEventListener(Event.COMPLETE, onLoad); 
ldr.load(new URLRequest(xmlurl)); 
function onLoad(e:Event):void 
{ 
    //process xml here 
    dispatchEvent(e); 
} 

現在使用它作爲:

var grocery:GroceryStore = new GroceryStore(); 
grocery.addEventListener(Event.COMPLETE, onGroceryLoad); 
function onGroceryLoad(e:Event):void 
{ 
    grocery.get("lettuce"); 
}