Просмотр полной версии : Не работает ProgressEvent класса MultipartURLLoader
Makkssimka
11.06.2013, 19:39
Доброго времени суток! В общем такая байда загружаю файлы с помощью MultipartURLLoader конец кода:
loader.addEventListener(ProgressEvent.PROGRESS, onProgress);
loader.addEventListener(Event.COMPLETE, onCompletes);
loader.load('http://upload.ro/up/bin-debug/upload.php');
И обработчики событий:
private function onCompletes(event:Event):void{
panelProg.title = 'Идет сохранение изображения...';
}
private function onProgress(event:ProgressEvent):void{
trace(event.bytesTotal);
}
А вопрос в том почему onCompletes работает, файлы загружаются, а onProgress не работает?
Вроде сервер должен уметь, если нет, то работать не будет, но это я на уровне слухов.
Я тоже делал прелоадер с помощью прослушивания ProgressEvent , но он срабатывает по истечению некоторого времени . Вот пример http://belv.hdd1.ru/poselok
Почему так , я не понял.
Если у кого есть мысли по этому поводу , интересно узнать.
Что такое MultipartURLLoader? Он точно генерит ProgressEvent.PROGRESS?
belv, ну видимо потому что первый кадр что-то да весит, да? А пока он не загрузится, прелоадер не начнет отображаться. Так что он никогда не начнется с нуля, а с того процента, который вес первого кадра составляет от веса всего файла swf.
Makkssimka
11.06.2013, 23:20
Это класс, для загрузки, порекомендовали на одном из форумов, вот исходники в архиве:
Я думал , что ProgressEvent работает от загрузки общего веса swf , то есть начинает работать еогда начинается загрузка байтов и ему все равно на внутреннюю структуру файла.
А кто на него подписан-то, когда еще не загрузился самый первый класс? Кто его отображать должен?)))
Да , еще к слову в первом кадре , кроме текстового поля отображающего загрузку ничего нет и стоит стоп ,когда загрузка завершается переходит на 2 кадр.
Ну, у меня прогресс начинается с 5%, это очень даже неплохо. Когда сам файл меньше, легко может начинаться и с 25%, и больше.
Makkssimka, так у Вас аплоад НА сервер? Тогда конечно, это обычное дело. Сервер может вообще ни о чем не отчитываться, кроме окончания загрузки. Я как-то получал событие на 52%, это был праздник.
Да я и не говорю , что это плохо , просто не понятно как он срабатывает.По идее если файл будет к примеру 200 кбвйт , то он и не сработает , что возможно и происходит у автора .
Не надо путать прелоадер и лоадер, а тем более аплоадер.
Согласен , что эта строка
loader.addEventListener(ProgressEvent.PROGRESS, onProgress);
должна выглядеть так:
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgress);
Суть события на загрузку байтов не меняется ,будь то прелоадер или лоадер.
Еще у автора Event.COMPETE срабатывает , не знаю конечно может ли он отслеживать событие файла который выгружается на сервер.
"loader" это не Loader, и даже не URLLoader (у которого нет LoaderInfo), и даже не его наследник. Это сторонний класс MultipartURLLoader, читайте внимательней. И он да, передиспатчивает события внутреннего URLLoadera от своего имени, в том числе и события прогресса. Вот только сервер не обязан сообщать о прогрессе, а плеер о нем понятия не имеет при аплоаде. Только сервер знает, сколько байт он принял. Если сервер молчит — события нет. Но об окончании операции сервер обязан сообщить в любом случае.
Теперь понятно,спасибо за информацию. Но все же странно ведет себя ProgresEvent , начинает отслеживать , когда вздумается .
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.