2009-06-13 5 views
1

バックグラウンドで画像をロードする際に、簡単な進捗インジケータを実行する必要があります。私は、標準的な方法であると思われるflash.display.Loaderクラスを使用しています。問題は、flash.display.LoaderInfoがトレースを使用してProgressEvent.PROGRESSを定期的に起動するのを見ることができますが、動的に更新されるテキスト(またはその他のグラフィックスオブジェクト)は、読み込みが終了したときに1回だけ更新されるということです。ディスプレイ更新がキューに入れられ、最後に1つの更新のみが発生したようです。flash.display.Loaderを使用している進行状況インジケータ

public function init() 
{ 
    var loader : Loader = new Loader(); 
    var request : URLRequest = new URLRequest(this.imageSrc); 
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaded); 
    loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, updateProgress); 
    loader.load(request); 
} 

と、このイベントハンドラである:私はおそらく基本問題について謝罪

private function updateProgress(event : ProgressEvent) : void 
{ 
    progressIndicator.text = event.bytesLoaded + "/" + event.bytesTotal; 
    trace(event.bytesLoaded + "/" + event.bytesTotal); 
} 

これは、ロードを開始機能の簡易版です。私は非常に頻繁にフラッシュを使用しません。しかし、私は賢明で直感的なことをやっているようです。それは101のフラッシュ落とし穴でなければならない。

答えて

0

答えはやや鈍いようです。私の問題は、開発作業中に、スタンドアロンのFlash Playerを使用していたことです(私はSWFファイルをダブルクリックするか、Adove Flash CS3で実行しました)。問題は明らかに、画像がすでにキャッシュされていて、Event.PROGRESSを素早く連続して呼び出すことができたということでした。後でブラウザでSWFファイルを試して定期的にブラウザキャッシュを消去すると、イメージは毎回期待どおりに読み込まれました。

画像がキャッシュされているにもかかわらず、私はいくつかのEvent.PROGRESSイベント(約3かそこら)を持っていて、それはちょうど非常に粗い粒度の問題であると思っていました。私が出来事の間の時間を測定したなら、おそらく起こっていたことをより早く発見したでしょう。

3

新しいFLAにコードを貼り付けました。ちょっとした調整(タイムラインコードからタイムラインコード、メジャーなし)で試しました。

import flash.events.ProgressEvent; 

var progressIndicator:TextField = new TextField(); 
addChild(progressIndicator); 
progressIndicator.autoSize = "left"; 
progressIndicator.border = true; 

var loader : Loader = new Loader(); 
    var request : URLRequest = new URLRequest("kernel_params.swf"); 
    loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, updateProgress); 
    loader.load(request); 

function updateProgress(event : ProgressEvent) : void 
{ 
    progressIndicator.text = event.bytesLoaded + "/" + event.bytesTotal; 
    trace(event.bytesLoaded + "/" + event.bytesTotal); 
} 

いつもいいですね。出力パネルに何らかのエラーやメッセージがありますか? あなたが送信した部分が上手く見えるかもしれないので、コードのどこかに型式があるかもしれません。

+0

大変ありがとうございます。私は問題が何であるかを考えたと思う。私は答えを投稿するつもりです。 –

+0

問題ありません。私はこれを見たことがないので、これを分かち合うことで時間を節約してくれてありがとう。 –

関連する問題