使用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;
}
答案 0 :(得分:1)
在Flex中,当Actionscript代码运行时,屏幕永远不会更新。它基本上是这样的:
要了解更多详情,请访问[flex elastic racetrack]。但以上是您需要了解的内容。
如果您不希望长时间运行的代码冻结屏幕,则必须将其分解为块并在多个帧中执行它们,可能在FRAME_ENTER事件处理程序中。< / p>
答案 1 :(得分:0)
我不确定究竟是什么问题。我尝试了以下代码,它无需Dog::__construct()
。
validateNow