apache-flex - 弹性 : dialog not display immediately

标签 apache-flex air

在 AIR 应用程序中,我有以下代码:

theDialog = PopUpManager.createPopUp( this, TheDialogClass, true ) as TheDialogClass; theDialog.addEventListener(FlexEvent.CREATION_COMPLETE, cpuIntensiveCalc);



在 cpuIntensiveCalc 结束时,对话框被删除。该对话框通知用户“有事情发生,请稍等”。

问题是 cpuIntensiveCalc 在对话框绘制之前启动。所以用户体验是应用程序在没有指示器的情况下卡住 10 秒,然后模态对话框在屏幕上快速闪烁(不到一秒)。

Adobe docs 说这是关于 creation_complete

Dispatched when the component has finished its construction, property processing, measuring, layout, and drawing.



所以这感觉像是正确的事件。
以完整性的名义,我也尝试过

theDialog = PopUpManager.createPopUp( this, TheDialogClass, true ) as TheDialogClass; cpuIntensiveCalc();



但得到了相同的结果。

TIA

最佳答案

这样做的原因是 Flash Player 是单线程的,因此您会阻止 UI 对对话框弹出窗口使用react,直到数学块完成。

哈克修复时间...

你有两个选择。

(这个应该可以工作,但未经测试)将 cpuIntensiveCalc() 调用包装在 callLater 中,以便 UI 可以在您阻止渲染之前完成渲染。

或者

使用“绿色线程”来分解你的处理,这样你就不会完全阻塞 UI 处理。 Take a look .

关于apache-flex - 弹性 : dialog not display immediately,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1410398/

相关文章:

apache-flex - 关于TextField中htmlText的性能问题

apache-flex - 弹性 : How do you validate 2 password fields to make sure they match?

Android 'Smart Display' 和 AIR/相机交互问题

air - Adobe AIR Android 蓝牙串行数据通信

actionscript-3 - AIR 3.5 移动项目设备 ID

flash - 如何在AIR ServerSocket的服务器端具有XMLSocket?

apache-flex - 在 Flex 中对 ArrayCollection 进行排序

正则表达式验证器 MXML

apache-flex - 通过URLRequest上传字节数组

actionscript-3 - 土坯空气 : what browser does StageWebView use?