我有一个绑定到ArrayCollection的mx:TileList。我有一些代码在修改ArracyCollection之前显示“正在加载...”消息,之后一些代码隐藏了加载消息。
对于小型数据集,它工作正常。但是,我注意到数组大小约为50~更大,flex会在TileList完成呈现新数据之前隐藏我的加载消息,而我留下一个空白屏幕一秒钟。
TileList完成重新渲染后是否有可以侦听的事件?代码看起来像这样:
loading_message.visible = true;
for each (var x:Object in new_data) {
tile_list_data.append(x); // bound to my_tile_list component
}
my_tile_list.validateNow();
loading_message.visible = false;
在这个例子中,loading_message出现,消失,然后flex应用程序将在最终显示更新的TileList之前滞后。
有什么想法吗?谢谢!
答案 0 :(得分:0)
问题是,它没有.visible = true,为每个循环运行并等待它完成,然后转到.visible = false,但实际上运行.visible,对于每个循环,.visible。
如果你想确保在下一个代码行继续之前你的每一个结束,你需要将其余的代码移动到另一个函数,这将由一些custom event调用你将会使
现在,在你的每个内部,你需要添加一个代码来检查它是否完成,然后调用你的自定义事件调度程序。
var n:Number = 0;
for each (var x:Object in new_data) {
++n;
tile_list_data.append(x); // bound to my_tile_list component
if (new_data.length <= n) { call the event }
}
所以现在你将为每个人提供一些自定义事件调度程序,它将调用包含其余代码的另一个函数,包括.visable = false。,确保其余的代码只在运行之后运行为每个目的结束。
我知道这很难看,但这是我能想到的唯一方法,以确保它能够正常工作。