【问题标题】:Reading in a File (AS3) and repeatedly/dyamically accessing the data读取文件 (AS3) 并重复/动态访问数据
【发布时间】:2010-12-19 18:14:13
【问题描述】:

这可能是一个老问题,但我还没有找到一个好的答案。例如,假设您有一个读取 xml 文件的类,以获取杂货店商品、价格等信息。该类还允许您使用 get() 函数检索有关杂货店商品的信息。

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() 函数,所以我不能在文件加载之前停止?有没有人知道如何读取文件,然后能够安全地动态和重复地访问数据?希望这个例子和我的问题足够彻底,如果不让我知道的话。

谢谢

【问题讨论】:

  • 休眠/等待文件加载是个坏主意。没有人喜欢无响应的应用程序。在加载数据时显示进度条/加载屏幕 是个好主意。构建一个等待 XML onLoad 并自动弹出加载屏幕的类。

标签: actionscript-3 downloadfile


【解决方案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");
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-24
    • 2017-04-02
    • 2016-05-08
    • 2010-12-28
    • 2014-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多