这可能是一个初学者的问题,但我一生都无法弄清楚。
我正在使用 Flex 为一个大型项目开发 GUI,特别是底部的状态栏。在我的 StatusBar 类中是一个 ProgressBar,其他正在工作的类可以告诉它在进展时更新(更改栏完成和标签)。我遇到的问题是 Flex 不会更新屏幕上显示的内容,直到为时已晚,例如
进度条已初始化,完成 0%
某些类将 ProgressBar 设置为完成 12%
某些类做了一些工作
某些类将 ProgressBar 设置为已完成 56%
发生的情况是,完成的 12% 永远不会显示,它只是在工作期间挂在 0%,然后直接跳到完成的 56%。我试图了解 Flex 组件的生命周期(失效和验证),并且我认为我理解它并正确应用它,但它根本不起作用。我需要告诉flex在之后重绘我的StatusBar(或至少其中的ProgressBar)某堂课将其设置为已完成 12%,但在此之前某堂课开始做它的工作。我该怎么做呢?
正如其他答案中提到的,Flash 播放器是单线程的,如果您不将工作分解为可以在单独的“帧”中执行的离散块,您将在 ui 中看到跳跃和口吃,这是有效地显示您所看到的内容。
如果您确实必须看到 12% 的消息,那么仅仅使显示列表无效是不够的,因为显示列表在 56% 的工作完成之前没有机会更新,您必须使用以下命令显式中断自然事件周期打电话给validateNow()
设置完您的消息后。
然而,如果关注性能,这并不是最好的方法。您可能会通过司法使用callLater()
依次安排每个工作块,因为这将允许玩家在尝试流程中的下一步之前完成一个帧周期(并更新显示列表)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)