ActionScript 3:ProgressEvent的bytesLoaded属性到Document Class

时间:2009-11-01 16:00:53

标签: flex flash actionscript events progress

在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属性更新的好处。有什么想法吗?

1 个答案:

答案 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);
}