我似乎无法找到我认为是常见问题的答案。
我想要做的是: 1.显示“打开文件”对话框 2.处理选定的文件 3.在处理文件期间,向用户报告进度
我定义了一个文件,并使用了browseForOpen和AddEventListener:
public var fileInput:File = new File();
fileInput.browseForOpen("Open file",[filter]);
fileInput.addEventListener(Event.SELECT, onFileSelect);
// Step 2 - function gets called to process the file
private function onFileSelect(e:Event):void
{
// Step 3 - do some processing, and at intervals report progress to the screen
}
我的问题是 - 在功能完成之前,事件监听器中对屏幕的任何更改都无法完成。
任何帮助将不胜感激, 感谢
答案 0 :(得分:0)
或许启动一个计时器,让它检查变量的状态(表示处理进度)作为一个单独的运行函数,它不会倾向于等待父函数。
[要明确我说从计时器调用一个sperate函数。]
但我倾向于同意Flextras.com,因为大部分时间我都这样做,处理时间是毫秒,所以只是没有看到。
答案 1 :(得分:0)
在第3步中,如果你正在做一些cpu密集型工作(比如巨大的xml解析),那么你可能会看到这个NOT更新问题。由于Flex是单线程的,因此最好使用Green threading concept。
您可以阅读有关绿色线程here的信息。