在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”,然后从传递的事件对象中获取信息,如下所示:< / p>
文档类
private function getProgressInfo(e:Event):void
{
trace(e.target.bytesTotal);
}
然而,这证明是徒劳的......关于如何从IMageLoader类中获取进度信息的任何想法?
注意:我知道我可以添加bytesLoaded&amp; bytesTotal到一个公共变量,但是我不会在ProgressEvent类中看到bytesLoaded属性更新的好处。有什么想法吗?
答案 0 :(得分: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);
}