2009-11-24 55 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"); 
}