强制MX ProgressBar的更新呈现?

时间:2015-05-12 12:08:53

标签: actionscript-3 flex air flex4

使用manual时,是否有人知道在setProgress模式下强制渲染更新到MX ProgressBar的方法(或技巧)?

我遇到一个包含几个for循环的代码块的情况,这需要一些时间来完成。解包此代码以生成事件等将是单调乏味的。

更新

让我用一些伪代码扩展它。我想在操作数组内容期间更新进度条。 for循环阻塞,因此屏幕不会更新。我已经尝试了validateNow(),但这没有效果。

是否有一些非复杂的方法我可以解开for循环或使用AS3的事件模型来更新进度条? (我更习惯于多线程环境,这种任务很简单)。

   private function doSomeWork():void {
       progressBar.visible = true;

       for(var n = 0; n < myArray.length; n++){

            progressBar.setProgress(n, myArray.length);
            progressBar.label = "Hello World " + n;
            progressBar.validateNow(); // this has no apparent effect

            var ba:ByteArray = someDummyFunction(myArray[i]);
            someOtherFunction(ba);
        }

         progressBar.visible = false;
      }

2 个答案:

答案 0 :(得分:1)

在Flex中,当Actionscript代码运行时,屏幕永远不会更新。它基本上是这样的:

  1. 执行所有可运行的Actionscript代码。
  2. 更新屏幕。
  3. 不断重复。
  4. 要了解更多详情,请访问[flex elastic racetrack]。但以上是您需要了解的内容。

    如果您不希望长时间运行的代码冻结屏幕,则必须将其分解为块并在多个帧中执行它们,可能在FRAME_ENTER事件处理程序中。< / p>

答案 1 :(得分:0)

我不确定究竟是什么问题。我尝试了以下代码,它无需Dog::__construct()

validateNow