ActionScript 3: свойство bytesLoaded объекта ProgressEvent для класса документа - PullRequest
1 голос
/ 01 ноября 2009

в 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 к публичной переменной, но тогда я не получу преимущества, увидев обновление свойства bytesLoaded в классе ProgressEvent. Есть идеи?

1 Ответ

2 голосов
/ 01 ноября 2009

Убедитесь, что ваш класс 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);
}
...