2010-05-31 53 views
2

以下是Flex中預加載器完整函數的重寫。在特定時間調用flex initComplete

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

我想要做的是,當應用程序已經加載finsihed我想改變爲「配置」預加載文本。 然後我想去我的代碼中做一堆安裝的東西。

一旦我完成了所有的設置,我想如何讓預加載器從我的代碼中的其他地方派發它的Event.complete?

我試過Application.application.preloader,但是它出現null。

所以我想我的問題確實是如何從我的應用程序的任何地方訪問預加載器。 更好的方法是將所有設置類作爲我的preloader類的成員?

+1

我有一個「解決方案」,但我不完全滿意它的正確方法。 基本上在我的主應用程序中,我設置了一個名爲「isConfigured」的布爾值,它被設置爲false; 當預加載器加載應用程序時,它啓動一個計時器來檢查這個變量。如果它是假的,則定時器再次出現。如果確實如此,則預加載器將完成整個事件。我從我選擇的地方設置了isConfigured變量。 它工作的很好,但就像我說過的,必須有更好的方法......? – dubbeat 2010-05-31 10:49:02

回答

0

組件LifeCycle按特定順序執行特定的操作,最後一個元素是使組件可見。

這聽起來像是你想推遲這個可見的設置爲true來做其他的事情。但是,如果您使用LifeCycle組件進行成像,這將是一個非問題。

你需要做什麼樣的應用程序init的東西?

+0

我想要做的應用程序初始化的東西基本上只是一個XML文件的downlaoding和解析,然後解析基於該文件的MP3 – dubbeat 2010-06-09 07:49:49

+0

然後使用ViewStack。一個視圖可以是您的「配置」消息,它也負責數據加載和處理。第二個視圖可以是您的實際UI。當你的配置完成時;切換ViewStack的selectedIndex。 – JeffryHouser 2010-06-09 12:27:16

+0

多數民衆贊成在一個方便的小解決方案 – dubbeat 2010-06-10 11:22:50

1

可能有幫助的一件事是模型 - 視圖 - 控制器模式。您是否在使用像Mate,Swiz或Cairngorm這樣的應用程序框架?

如果您使用Mate,例如,你可以做這樣的事情:

  • 創建一個屬性(如applicationState)的AppStateManager類
  • 與該FlexEvent的事件處理程序創建EventMap。 INITIALIZE事件。在這個處理程序中,將AppStateManager.applicationState設置爲「配置」
  • 您的EventMap具有注入器,該注入器將applicationState屬性注入到視圖中。注入器監聽對此屬性的更改並更新視圖。在這種情況下,它可能只是被注入到你的主視圖中。
  • 在主視圖中,您有一個公共可綁定屬性,也稱爲applicationState,它被Mate注入。
  • 在這個屬性的setter中,你可以有一個if/then或者一個開關,根據狀態執行不同的任務。例如,如果applicationState ==「COMPLETE」,那麼this.preloader.dispatchEvent(Event.COMPLETE)或類似的東西。

詳細信息是僞概述出來的,但是想法是使用Flex的綁定在發生更改時通知視圖組件,並讓共享對象維護狀態。不知道這是你在找什麼...

+0

+1:我正在尋找這個解決方案!謝謝! – 2011-02-06 18:30:51

相關問題