我找到了解決解決問題。關鍵是捕獲預加載器的FlexEvent.INIT_PROGRESS事件,對其進行排隊,並在配置完全加載之前停止其傳播。這有效地阻止了框架繼續進行應用程序初始化。配置加載後,重新分配排隊的事件,讓框架完成預加載階段。下面的示例代碼(僅適用件):
public class PreloaderDisplay extends Sprite implements IPreloaderDisplay {
// mx.preloaders.IPreloaderDisplay interface
public function set preloader(preloader:Sprite):void {
// max priority to ensure we catch this event first
preloader.addEventListener(FlexEvent.INIT_PROGRESS, onInitProgress, false, int.MAX_VALUE);
startLoadingConfiguration();
}
private function onInitProgress(e:FlexEvent):void {
if (isConfigurationLoading) {
queuePreloaderEvent(e);
e.stopImmediatePropagation();
}
}
private function onConfigurationLoaded():void {
dispatchQueuedPreloaderEvents();
}
}
要在應用程序中使用它:
<mx:Application preloader="the.package.of.PreloaderDisplay">
我實際使用,作爲一個解決辦法,但想知道如果有一個更好的辦法。感謝您的建議。 – 2010-05-07 12:45:17