我有一个从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);
}
答案 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函数还没有完成时循环如何继续。