AS3环路和事件侦听器
问题描述:
我已经从一个MySQL数据库返回多维数据阵列,当这种被收集的createNews函数创建用户界面。我遇到的问题是循环迭代比创建UI更快,是否有一种方法使用事件监听器的循环,所以它只在我的函数完成其工作后才继续?AS3环路和事件侦听器
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);
}
答
您可以从完成创建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如何运作的工作,一切是如何构成的,您的通话processNext的过程时所做的用户界面会有所不同。我在猜测createNews会创建一个新的类或者其他的东西,在这种情况下,你会附加一个事件监听器给这个新类,监听一个COMPLETE事件,这个事件在创建完成后会被调度,并且将processNext设置为事件处理器。
答
您的createNews函数不会阻止循环,直到它返回? Actionscript是单线程的,所以我不确定当createNews函数尚未完成时循环如何继续。
+0
表示加载的组件转换(补间),或使用loader或urlloader加载某些东西,或使用timerEvent或setTimeout。这些都是异步的 – jonathanasdf 2010-04-14 02:38:17
都似乎工作,我不知道闪光灯是单线程。虽然createnews()确实会调用另外3个函数,所以也许是这样吗? – Ross 2010-04-14 09:37:17