2011-10-26 65 views
0

使用Flash Builder 4.5我已經通過擴展Sp​​arkDownloadProgressBar實現了自定義預加載器。現在我希望預加載器保持在屏幕上,直到我的應用程序加載了外部數據。一旦應用程序的外部數據已經加載,我想讓預加載器分派Event.COMPLETE事件。Flash Builder 4.5 :: Preloader ::如何從應用程序訪問預加載器對象

意圖是有一個3階段預加載器。 第一次加載RSL, 第二次SWF, 第三次加載數據。

我已經重寫了initCompleteHandler函數,所以一旦swf加載後它不會觸發Event.COMPLETE事件。我在預加載器中有一個名爲removePreloader的公共函數,它觸發了Event.COMPLETE事件。

在名爲preloader的應用程序中有一個屬性,但它爲空。

我的應用程序如何調用預加載器?

感謝, 加里

+0

我找到了答案,但StackOverflow不會讓我發佈8個小時。簡而言之,我在應用程序中將變量設置爲預加載函數。應用程序可以在準備就緒時調用該函數。一旦StackOverflow讓我發佈代碼,我會的。 – Gary

回答

0

我不知道這是否是最優雅的AS3解決方案,但它工作。如果您有更好的方法,請發佈。

應用 MXML,添加以下變量:

public var preloaderFinalFireFunction:Function; 

預加載(其延伸SparkDownloadProgressBar)我重寫initCompleteHandler指定功能,所述預加載器內的給應用。當我準備好將預加載器移除時,應用程序調用preloaderFinalFireFunction();

override protected function initCompleteHandler(event:Event):void{ 
    var app:MyApplication = MyApplication(FlexGlobals.topLevelApplication); 
    app.preloaderFinalFireFunction = removePreloader; 
} 

protected function removePreloader():void{ 
    var app:MyApplication = MyApplication(FlexGlobals.topLevelApplication); 
    app.preloaderFinalFireFunction = null; 
    dispatchEvent(new Event(Event.COMPLETE)); 
} 
相關問題