0

我有一个 Flex 4 应用程序,它不时需要进行大量处理,这导致用户等待几秒钟才能完成。我知道 Flex 允许通过游标管理器设置和删除繁忙的游标。我使用它如下:

CursorManager.setBusyCursor();    // add busy cursor
// execute lengthy processing here; e.g. switch to a new screen with a lot of layout
CursorManager.removeBusyCursor(); // remove busy cursor

然而,在实践中,在某些情况下,忙碌光标不会显示,或者,如果它显示,它会在它被删除之前显示(如果你眨眼你会错过它)。这个想法是在冗长的处理过程中显示繁忙的光标,而不是在完成后的几分之一秒内。

所以,我想知道是否有一种设计模式可以用来确保在执行冗长的处理步骤之前总是显示繁忙的光标。例如,这些处理步骤可能是:(1) 转换到必须构建的具有复杂布局的新屏幕,或 (2) 创建需要很长时间才能呈现的图表等。

我怀疑任何使用 Flex 进行设计的人都曾遇到过这种情况。是否有一个可以使用的通用设计模式,或者每次找出执行繁忙光标的确切位置以便它在正确的时间显示出来是一次独特的冒险?任何建议表示赞赏。

4

1 回答 1

1

您的问题是任何类型的“冗长处理”都会冻结 UI,因此它不会有机会更新屏幕 - 因此在开始计算之前不会显示任何光标更改。

您可以做几件事,但在我们详细介绍之前:当然,最好从一开始就防止冻结!您可以通过以下两种方式之一来执行此操作:更改您的计算,以便您充分优化您的算法,以便它们可以比当前帧速率更快地完成,或者将较长的计算分解为更小的块,从而“分散”资源跨多个帧的密集循环 - 并允许屏幕在其间更新。您可以在当前的 FP 版本中使用工作线程,或者在旧版本中使用伪线程。

为了快速获得结果,只需在更改光标setTimeout使用,将繁重的过程延迟 100 毫秒。这样,屏幕可以在计算开始之前更新。

于 2013-02-07T01:16:09.377 回答