Как мы реализуем экран «Пожалуйста, подождите ....» во Flex, когда приложение занято - PullRequest
2 голосов
/ 16 марта 2010

У меня есть функция, которая восстанавливает все настройки моего приложения по умолчанию. Этот процесс может занять немного времени, поэтому я хотел бы реализовать модальное всплывающее окно «Пожалуйста, подождите ...», чтобы пользователь знал, что все в порядке и программа не зависла. Как только функция завершит свою задачу, я бы хотел, чтобы она удалила сообщение и возобновила нормальное поведение.

альтернативный текст http://www.freeimagehosting.net/uploads/c5906da30c.jpg

Ответы [ 4 ]

2 голосов
/ 16 марта 2010

До тех пор, пока вам не нужно передавать что-либо пользователю, кроме "приложение все еще работает", я думаю, что более элегантный способ - просто изменить курсор:

<code>mx.managers.CursorManager.setBusyCursor()
//do stuff
mx.managers.CursorManager.removeBusyCursor()
Курсор изменится на часы с вращающимися стрелками. Я не уверен, есть ли способ переопределить это с помощью вашей собственной анимации, но это просто и не требует от вас создания собственного окна.
2 голосов
/ 16 марта 2010

На старте:

var waitingpopup:TitleWindow = new TitleWindow()
waitingpopup.title = "Please Wait ..."

PopupManager.addPopup(waitingpopup, this, true)

В комплекте:

PopupManager.removePopup(waitingpopup)
1 голос
/ 16 марта 2010

Вы можете использовать PopUpManager для создания модального всплывающего окна с анимированным вертушкой.Компонент Alert делает это.Вы всегда можете обратиться к исходному коду Alert, чтобы увидеть, как он работает.

0 голосов
/ 03 декабря 2013

Для тех, кто опаздывает на этот вопрос, Adobe выпустила Throbber в 4.5:

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> 

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...