as3循环和事件监听器

时间:2010-04-13 19:19:54

标签: actionscript-3 actionscript loops addeventlistener

我有一个从mysql数据库返回多维数据的数组,当收集这个数据时,createNews函数会创建用户界面。我遇到的问题是循环比创建UI更快地迭代,有没有办法使用带有循环的事件监听器,所以它只在我的函数完成其工作后继续?

var t:Array = responds.serverInfo.initialData;  
for (var i:uint = 0; i < t.length; i++) {
    var date = t[i][1];
    var newstitle = t[i][2];
    var story= t[i][3];
    var image = t[i][4];

    createNews(date, newstitle, story, image);    
}

2 个答案:

答案 0 :(得分:0)

你可以在创建ui元素时进行自定义回调,然后处理数组中的下一个项目。

var t:Array = responds.serverInfo.initialData;
var numProcessed:int = 0;

private function processNext() : void {
    if (numProcessed == t.length) return;
    var date = t[numProcessed][1];
    var newstitle = t[numProcessed][2];
    var story= t[numProcessed][3];
    var image = t[numProcessed][4];

    numProcessed++;

    createNews(date, newstitle, story, image);  
}

取决于createNews函数的工作方式以及所有结构的结构,ui完成后调用processNext的过程会有所不同。我猜测createNews会创建一个新类或者其他东西,在这种情况下,你会将一个事件监听器附加到该新类,监听一个COMPLETE事件,该事件将在创建完成时调度,并将processNext设置为事件处理程序。

答案 1 :(得分:0)

你的createNews函数在返回之前是否阻止循环? Actionscript是单线程的,所以我不确定当createNews函数还没有完成时循环如何继续。