Flex addEventListener - 如何在调用事件期间刷新屏幕?

时间:2011-09-12 20:45:46

标签: flex events refresh screen addeventlistener

我似乎无法找到我认为是常见问题的答案。

我想要做的是: 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
}

我的问题是 - 在功能完成之前,事件监听器中对屏幕的任何更改都无法完成。

任何帮助将不胜感激, 感谢

2 个答案:

答案 0 :(得分:0)

或许启动一个计时器,让它检查变量的状态(表示处理进度)作为一个单独的运行函数,它不会倾向于等待父函数。

[要明确我说从计时器调用一个sperate函数。]

但我倾向于同意Flextras.com,因为大部分时间我都这样做,处理时间是毫秒,所以只是没有看到。

答案 1 :(得分:0)

在第3步中,如果你正在做一些cpu密集型工作(比如巨大的xml解析),那么你可能会看到这个NOT更新问题。由于Flex是单线程的,因此最好使用Green threading concept

您可以阅读有关绿色线程here的信息。