2011-10-26 10 views
0

Flash Builder 4.5での作業SparkDownloadProgressBarを拡張してカスタムプリローダーを実装しました。今私はアプリケーションが外部データに読み込まれるまで、プリローダーを画面上にとどめたい。アプリケーションの外部データがロードされたら、プリローダーにEvent.COMPLETEイベントをディスパッチさせる必要があります。Flash Builder 4.5 ::プリローダ::アプリケーションからプリローダオブジェクトにアクセスする方法

目的は、3相プリローダーを持つことです。 最初にRSLをロードし、 SWFを2番目に、 3番目のアプリケーションがデータをロードします。

私はinitCompleteHandler関数をオーバーライドしているので、swfがロードされるとEvent.COMPLETEイベントを発生させません。私はEvent.COMPLETEイベントを発生させるremovePreloaderというプリローダーにpublic関数を持っています。

アプリケーションにpreloaderという名前のプロパティがありますが、nullです。

私のアプリケーションはどのようにプリローダーを呼び出すことができますか?

おかげで、 ゲイリー

+0

私は答えを見つけましたが、StackOverflowは8時間ポストさせませんでした。私は、アプリケーションの変数をプリローダー関数に設定しています。アプリケーションは、準備ができたらその関数を呼び出すことができます。 StackOverflowを実行するとコードを投稿できます。 – Gary

答えて

0

私はこれが最もエレガントなAS3ソリューションですが、それが動作しているかはわかりません。より良い方法があれば、投稿してください。 アプリケーション MXMLで

、私は、次の変数を追加しました:私はプリローダ内部だ機能を割り当てることinitCompleteHandlerをオーバーライド(SparkDownloadProgressBarを拡張)プリローダ

public var preloaderFinalFireFunction:Function; 

を応用。プリローダーを削除する準備ができたら、アプリケーションは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)); 
} 
関連する問題