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 回答