【发布时间】:2010-03-16 10:21:14
【问题描述】:
我有一个功能可以恢复我的应用程序的所有默认设置。这个过程可能需要一些时间,所以我想实现一个“请稍候...”模式弹出窗口,让用户知道一切正常并且程序没有冻结。一旦函数完成其任务,我希望它删除消息并恢复正常行为。
alt text http://www.freeimagehosting.net/uploads/c5906da30c.jpg
【问题讨论】:
标签: apache-flex
我有一个功能可以恢复我的应用程序的所有默认设置。这个过程可能需要一些时间,所以我想实现一个“请稍候...”模式弹出窗口,让用户知道一切正常并且程序没有冻结。一旦函数完成其任务,我希望它删除消息并恢复正常行为。
alt text http://www.freeimagehosting.net/uploads/c5906da30c.jpg
【问题讨论】:
标签: apache-flex
开始时:
var waitingpopup:TitleWindow = new TitleWindow()
waitingpopup.title = "Please Wait ..."
PopupManager.addPopup(waitingpopup, this, true)
完成后:
PopupManager.removePopup(waitingpopup)
【讨论】:
只要您不需要向用户传达“应用仍在运行”之外的任何内容,我认为更优雅的方法是更改光标:
mx.managers.CursorManager.setBusyCursor()
//do stuff
mx.managers.CursorManager.removeBusyCursor()
光标将变为带有旋转指针的时钟。我不确定是否有办法用您自己的动画覆盖它,但它很简单,不需要您设计自己的窗口。
【讨论】:
您可以使用 PopUpManager 创建带有动画微调器的 Modal PopUp。警报组件执行此操作。您可以随时参考 Alert 源代码以了解其工作原理。
【讨论】:
对于那些迟到的人,Adobe 在 4.5 中发布了一个 Throbber:
http://www.adobe.com/cfusion/exchange/index.cfm?event=extensionDetail&loc=en_us&extid=1283019
http://fusiongrokker.com/post/using-the-flex-4-5-busyindicator
http://flexdevtips.blogspot.com/2011/05/simple-animating-preloader-and.html
例如,从上面的 fusiongrokker 链接运行以下命令:
private function busyOn():void
{
throbberId.visible = true;
}
private function busyOff():void
{
throbberId.visible = false;
}
]]>
</fx:Script>
<s:VGroup width="100%"
paddingLeft="10"
paddingRight="10"
paddingTop="10"
paddingBottom="10">
<s:BusyIndicator
id="throbberId"
visible="false"
rotationInterval="{rotationInterval}" />
<s:Button
id="start"
click="busyOn()"
width="100%"
height="50"
label="start" />
<s:Button
id="stop"
click="busyOff()"
width="100%"
height="50"
label="stop" />
</s:VGroup>
【讨论】: