ActionScript 3: свойство ProgressEvent bytesLoaded для класса документа

58
7

в 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?


note: Я знаю, что могу добавить bytesLoaded и bytesTotal в общедоступную переменную, но тогда мне не удастся увидеть обновление свойств bytesLoaded в классе ProgressEvent. Любые идеи?

спросил(а) 2009-11-01T19:00:00+03:00 10 лет, 11 месяцев назад
1
Решение
71

Убедитесь, что класс 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-01T19:06:00+03:00 10 лет, 11 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема