1

AS3 には、リクエストに応じて画像をロードする外部クラス ImageLoader があります。そのクラスには、イベント ハンドラーがあります。

ImageLoader クラス

public function loadImg(path:String):void
{
 ldr = new Loader();
 ldr.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, getProgress);
 var req:URLRequest = new URLRequest(path);
 ldr.load(req);
}

private function getProgress(e:Event):void
{
 dispatchEvent(new Event("PROGRESS_INFO"));
}

ダウンロードの進行状況の更新をメインのドキュメント クラスに送り返して画面に表示しようとしているので、イベント "PROGRESS_INFO" をディスパッチして、渡されたイベント オブジェクトから情報を取得しようとしています。

ドキュメント クラス

private function getProgressInfo(e:Event):void
{
 trace(e.target.bytesTotal);
}

ただし、これは無駄であることが証明されています... IMageLoader クラスから進行状況情報を取得する方法についてのアイデアはありますか?

注: パブリック変数に bytesLoaded と bytesTotal を追加できることはわかっていますが、それでは、ProgressEvent クラスで bytesLoaded プロパティの更新を確認する利点が得られません。何か案は?

4

1 に答える 1

2

ImageLoader クラスが EventDispatcher クラスを拡張していることを確認してください。また、新しいイベントを作成する代わりに、ProgressEvent を再ディスパッチする必要があります。

private function getProgress(e:ProgressEvent):void
{
 dispatchEvent(e);
}

これはドキュメントクラスで機能するはずです:

myImageLoader = new ImageLoader();
myImageLoader.addEventListener(ProgressEvent.PROGRESS, getProgressInfo);

private function getProgressInfo(e:ProgressEvent):void
{
 trace(e);
}
于 2009-11-01T16:06:01.133 に答える