【问题标题】:Flex addEventListener - how to refresh the screen during called event?Flex addEventListener - 如何在调用事件期间刷新屏幕?
【发布时间】:2011-11-15 16:01:09
【问题描述】:

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

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

我的问题是 - 事件侦听器中对屏幕的任何更改在函数完成之前都不会完成。

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

【问题讨论】:

  • 也许您的处理速度很快? Flex 屏幕只会根据它的帧速率重绘,我相信默认是每秒 24 帧。因此,如果您的文件处理时间少于 1/24 秒;这就是为什么在您的视觉更新显示之前完成处理的原因。否则,您应该在更新屏幕和处理文件的事件侦听器后面共享一些代码。
  • 没有处理需要一分钟,谢谢
  • 那么你应该考虑分享一些关于你如何更新屏幕的代码;因为这很可能是问题所在。您可能还想分享一些处理代码。

标签: apache-flex events refresh screen addeventlistener


【解决方案1】:

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

[要清楚,我是说从计时器调用一个单独的函数。]

但我倾向于同意 Flextras.com 的观点,因为大多数时候我都这样做了,处理时间是几毫秒,所以没有被看到。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2010-09-13
      • 2017-02-22
      • 2014-01-10
      • 2022-10-22
      • 2010-11-20
      • 2018-06-25
      • 1970-01-01
      • 1970-01-01
      • 2015-04-06
      相关资源
      最近更新 更多