2010-05-31 1 views
2

Ниже приведена надстройка по полной функции для прелоадера в Flex.вызов flex initComplete в определенное время

private function initComplete(e:Event):void 
    { 
    //dispatchEvent(new Event(Event.COMPLETE)); 
    cp.status.text="Configuring... Please Wait"; 
    } 

То, что я хочу сделать, это когда приложение finsihed загрузки Я хочу, чтобы изменить текст Preloaders «Настройка». Затем я хочу пойти и сделать кучу настроек в своем коде.

Как только я выполнил всю настройку, я хотел, как я могу заставить Preloader отправить свой Event.complete из другого места, где в моем коде?

Я пробовал Application.application.preloader, но он имеет значение null.

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

+1

У меня есть «вид решения», но я не вполне доволен своим правилом. В основном в моем основном приложении Я установил логическое имя «isConfigured», для которого установлено значение false; Когда предварительный загрузчик загружает приложение, он запускает таймер, чтобы проверить эту переменную. Если он ложный, таймер идет снова. Если это правда, preloader разгоняет полное событие. Я установил переменную isConfigured из выбранного вами места. Он отлично работает, но, как я сказал, должен быть лучший способ ......? – dubbeat

ответ

0

Компонент LifeCycle выполняет конкретные действия в определенном порядке, а ближайший конечный элемент - сделать компонент видимым.

Звучит так, как будто вы хотите отложить эту настройку от видимого до истины, чтобы делать другие вещи. Но, если вы используете компонент LifeCycle, это будет не проблема.

Какое приложение для запуска приложения вам нужно сделать?

+0

Инициализация приложения, которое я хочу сделать, это в основном просто downlaoding и синтаксический анализ файла xml, а затем разбор mp3 на основе этого – dubbeat

+0

Затем используйте ViewStack. Одним из представлений может быть ваше сообщение «Конфигурация», которое также заботится о загрузке и обработке данных. Второй вид может быть вашим фактическим интерфейсом. Когда ваша настройка будет выполнена; переключите SelectedIndex ViewStack. – JeffryHouser

+0

это удобное небольшое решение – dubbeat

1

Одной вещью, которая может помочь, является модельный вид-контроллер. Используете ли вы рамки для своего приложения, такие как Mate, Swiz или Cairngorm?

Если вы использовали Mate, например, вы могли бы сделать что-то вроде этого:

  • Создать класс AppStateManager со свойством (например, applicationState)
  • Создание EventMap с EventHandler для FlexEvent. Событие INITIALIZE. В этом обработчике установите AppStateManager.applicationState на что-то вроде «КОНФИГУРИРОВАНИЕ»
  • В вашей EventMap есть инжектор, который вводит свойство applicationState в представление. Инжектор прослушивает изменения этого свойства и обновляет представление. В этом случае его можно просто ввести в ваш основной вид.
  • В главном представлении у вас есть общедоступное свойство bindable, также называемое applicationState, которое вводится Mate.
  • В настройщике для этого свойства вы можете использовать if/then или switch, который выполняет разные задачи в зависимости от состояния. Например, если applicationState == "COMPLETE", то this.preloader.dispatchEvent (Event.COMPLETE) или что-то в этом роде.

Детали описаны в псевдо-набросках, но идея заключается в использовании привязок Flex для уведомления компонентов вида при внесении изменений и для хранения общих объектов. Не уверен, что это то, что вы ищете ...

+0

+1: Я искал это решение! благодаря! –