Предварительный загрузчик Flex должен быть виден до тех пор, пока не будет загружен другой внешний файл - PullRequest
1 голос
/ 13 июня 2011

У меня есть приложение Flex, которое загружает некоторые данные из базы данных.Во время этого я хочу, чтобы мой пользовательский предварительный загрузчик оставался видимым.

Дилемма: когда я откладываю dispatchEvent(new Event(Event.COMPLETE)) в обработчике FlexEvent.INIT_COMPLETE, загрузка никогда не произойдет, потому что следующий кадр не введен.

Как мне сохранить загрузчик, пока все данные не будут полностью загружены?

1 Ответ

0 голосов
/ 13 июня 2011

Прелоадер - это в основном спрайт. Все гибкие компоненты расширяют спрайты, поэтому вы можете довольно легко продолжать работу со спрайтами. Я не уверен, насколько сложно было бы переопределить ту часть инфраструктуры приложения, которая УДАЛЯЕТ этот спрайт перед загрузчиком ... однако, я думаю, что вы можете добавить спрайт обратно на сцену ... используя пользовательский компонент.

Вы, вероятно, должны создать UIComponent и добавить свой компонент preloader, чтобы вы могли использовать его с состояниями. Затем установите ваш новый UIComponent в состояние по умолчанию.

Ниже приведен код "psuedo" на моей голове.

public class MyFlexPreLoader extends UIComponent{

     private var var preloader:YourBasePreLoader; //This is the preloader you're already using

     override protected function createChildren(){
           //Add the Preloader here! 
           preloader = new YourBasePreLoader();
           addChild(preloader);
     }
     //Also add event listeners to manipulate your preloader to show the progress of loading stuff from DB
}

Тогда в вашем приложении

<comp:MyFlexPreLoader includeIn="preloading"/>

Теперь, когда вы закончите, измените currentState приложения от предварительной загрузки. Возможно, вам придется переопределить еще несколько методов в UIComponent, чтобы заставить его работать правильно.

...