【问题标题】:How we implement "Please wait ...." screen in flex when app is busy当应用程序繁忙时,我们如何在 flex 中实现“请稍候......”屏幕
【发布时间】:2010-03-16 10:21:14
【问题描述】:

我有一个功能可以恢复我的应用程序的所有默认设置。这个过程可能需要一些时间,所以我想实现一个“请稍候...”模式弹出窗口,让用户知道一切正常并且程序没有冻结。一旦函数完成其任务,我希望它删除消息并恢复正常行为。

alt text http://www.freeimagehosting.net/uploads/c5906da30c.jpg

【问题讨论】:

    标签: apache-flex


    【解决方案1】:

    开始时:

    var waitingpopup:TitleWindow = new TitleWindow()
    waitingpopup.title = "Please Wait ..."
    
    PopupManager.addPopup(waitingpopup, this, true)
    

    完成后:

    PopupManager.removePopup(waitingpopup)
    

    【讨论】:

      【解决方案2】:

      只要您不需要向用户传达“应用仍在运行”之外的任何内容,我认为更优雅的方法是更改​​光标:

      mx.managers.CursorManager.setBusyCursor()
      //do stuff
      mx.managers.CursorManager.removeBusyCursor()
      光标将变为带有旋转指针的时钟。我不确定是否有办法用您自己的动画覆盖它,但它很简单,不需要您设计自己的窗口。

      【讨论】:

      • 根据我的经验,这在重建 UI 组件时效果不佳。我假设提问者需要构建大量用户界面,否则不会花很长时间就会出现冻结。如果 Flash 播放器正在努力处理显示,则不会费心同时渲染自定义鼠标。我使用的一个选项是将按钮的文本更改为“请稍候...”并在渲染完成后将其更改回正常状态。
      • 我在调度调用后端的事件时使用过它。当您等待响应者从数据库中填充模型时,它非常有用。我想我不认为它会干扰 GUI 渲染。
      • 忙碌光标的问题是有时你会得到奇怪的行为。例如,当我刷新一个大型数据网格并将光标设置为忙碌时,有时我可以将鼠标悬停在其他 UI 控件上,然后出现常规鼠标光标,而 FLEX 忙碌光标则位于数据网格之上运行。是的,我一次有两个光标,这不是故意的。我发现繁忙的光标相当有问题。
      【解决方案3】:

      您可以使用 PopUpManager 创建带有动画微调器的 Modal PopUp。警报组件执行此操作。您可以随时参考 Alert 源代码以了解其工作原理。

      【讨论】:

      • 你能提供一些真实的例子吗?
      【解决方案4】:

      对于那些迟到的人,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> 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-17
        • 1970-01-01
        • 2021-02-26
        • 2019-11-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多