我正在调试一些代码并查看调度事件的循环,并为每条记录进行远程调用。
一切正常,直到有数百条记录(700)才是确切的。这是否会让flash播放器突然出现?我应该转移到排队系统吗?有多少记录太多了?
感谢任何有用的提示。
以下是发送连续调出的更新方法:
var counter:int= 0;
for each ( var item:ObjectVo in itemColl)
{
counter = counter + 1;
var evt:DataValidationEvent = new DataValidationEvent();
evt.myItem = item;
evt.eventType = DataValidationEvent.EVENT_TYPE_PASTE_FROM_EXCEL
if( counter == ( itemColl.length ) ){
evt.isLastCall=true;
}else{
evt.isLastCall=false;
}
evt.dispatch();
}
这是事件处理程序。在'isLastCall'设置为true之后,它只被调用一次。
private function addItemsFromList( item:itemVo ):void{
var myObj:ObjVo = new ObjVo();
myObj.description = item.description;
myObj.rule = item.objRule;
this.itemsColl.addItem( myObj );
this.itemsColl.itemUpdated( myObj );
this.itemsColl.refresh();
}
答案 0 :(得分:1)
如果您正在拨打几百个远程呼叫,那么它也可能是服务器,它会放弃您。我想知道Flash Player是否真的是瓶颈。 AVM2可以在几毫秒内完成几千次呼叫。
我可以用这个小信息来建议测量你的循环完成所需的时间,如果它真的是需要时间的循环,试着通过有选择地注释循环体的各个部分找到最昂贵的位。
修改强>
良好的补间引擎在60FPS的25K对象上为一些属性设置动画效果达到顶峰,这超过了每秒100万次调用(以及60帧的渲染)。你的代码肯定有问题。
您的代码速度缓慢的事情:
N*(N+1)
单个成本迭代,如果单个迭代意味着重绘网格,那么这可能真的出错了。无论如何,我认为在整个循环之后调度一个事件就足够了。