|
|
|||||
Регистрация: May 2001
Адрес: Москва
Сообщений: 670
|
unload для multiloadera
задача:
загрузить несколько файлов и отобразить их загрузку одним прогресбаром. делаю: начинаю загрузку файла, узнаю его размер, выгружаю, когда все размеры посчитаны - начинается окончательная загрузка. проблема: unloadClip MovieClipLoader-а анлоадит только после полной занрузки. unloadMovie работает, но нет возможности отследить ошибку загрузки (таймаут не гарантия реального отсутствия файла). пробовал даже LoadVars. узнаю размер. удаляю лоадер - загрузка продолжается. а если изменить ссылку, то с начала грузит файл по новой ссылке, а потом продолжает закачивать старый. |
|
|||||
Регистрация: May 2001
Адрес: Москва
Сообщений: 670
|
как это загрузить все сразу?
мне же нужно отобразить все на одном прогресбаре. типа ща загружено 10 байт из 100 000 милионов. пока загрузка не начнется, неизвестно какой размер у файла. фокс вообще по одному файлу грузит. если через MovieClipLoader делать, то постоянно прогресбар прыгает от 100 к 0 и обратно Ж( если простым лоадМуви, то вроде как все кучей пытаются загрузиться, но невозможно отследить ошибку загрузки, с появлением MovieClipLoader простое лоадМуви выдает в детБайтТотал -1 до начала загрузки, а не как рашьше (в 6-ке), только когда файла такого нет. а получается, что если загрузка начата, то остановить ее уже нельзя ( |
|
|||||
Регистрация: Nov 2006
Сообщений: 85
|
у меня такая же задача, я решил - разбивать прогресс бар на зоны - каждая - для своего файла. они, естественно, получатся неравномерные (правда, можно прикинуть приблизительно относительный размер зон в зависимости от размеров файлов). а выгружать что-то уже загруженное хотя бы на 1% - мне кажется, это идеологически неправильно - ведь лоадер ради загрузки, а не загрузка - ради лоадера
|
|
|||||
Регистрация: Nov 2006
Сообщений: 85
|
кстати, пришла в голову такая идея - можно ведь считать размер файла напрямую - через сокет! только ведь во флеше нет обычного сокета? XMLSocket не даст ведь к заголовкам обратиться? а так можно было бы открыть файл, считать заголовки, забрать Content-length - и вперед - к построению прогресс бара
|
|
|||||
как вариант: собирать информацию о всех загрузках в onLoadProgress:
var urls=["p1.jpg","p2.jpg"]; var loader=new MovieClipLoader(); loader.addListener(this); var movies=[]; for(var i=0;i<urls.length;i++){ var mc=this.createEmptyMovieClip("mc"+i,i) movies.push(mc); loader.loadClip(urls[i],mc); } function onLoadProgress(){ for(var i=0,l=0,t=0;i<movies.length;i++){ var gp=loader.getProgress(movies[i]); l+=gp.bytesLoaded; t+=gp.bytesTotal; } trace(l+"/"+t); } Последний раз редактировалось silin; 04.02.2007 в 19:17. |
|
|||||
Регистрация: May 2001
Адрес: Москва
Сообщений: 670
|
2 silin
с двумя файлами нет проблем. а когда файлов больше 10-ти ? MovieClipLoader в фоксе не начнет загрузку вторго файла не загрузив первый. 2 firelord ели бы я знал заранее размер файлов... ) 2 all сейчас читаю про возможности javascript в определении наличия файла. возможности потестить нет. ни у кого подобного опыта нет? |
|
|||||
Регистрация: Sep 2006
Сообщений: 256
|
Почему нельзя использовать в качестве индикатора процесса загрузки не число загруженных байт, а количество файлов, которые уже загружены (общее их число всегда можно получить, если захотеть)?
|
|
|||||
Цитата:
пропустил, сори тогда, хотя бы не грузить целиком, а только до первого получения инфы: class LoadSizer { var arr:Array=[]; var loader:MovieClipLoader; var tmpMC:MovieClip; var totalSize:Number=0; var current:Number=0; var addListener,broadcastMessage; function LoadSizer(urls:Array){ AsBroadcaster.initialize(this); loader=new MovieClipLoader(); tmpMC=_root.createEmptyMovieClip("tmpMC",_root.getNextHighestDepth()); loader.addListener(this); arr=urls; loader.loadClip(arr[current],tmpMC); } function onLoadProgress(){ totalSize+=loader.getProgress(tmpMC).bytesTotal; current++; if(current<arr.length){ loader.unloadClip(tmpMC); loader.loadClip(arr[current],tmpMC); }else{ broadcastMessage("onReady",totalSize); tmpMC.removeMovieClip(); } } } Последний раз редактировалось silin; 05.02.2007 в 09:56. |
|
|||||
Flash Aксакал
Регистрация: Jun 2005
Сообщений: 636
|
Слушайте, а чего юзера то пугать, флэш же выдает размер не сжатый, то есть если помимо картинок еще грузить и свф, то размер может в 2-3 раза больше реально скаченного.
Ну когда это было просто ну совсем необходимо (показывать кол-во байт) при условии что файлы скачивались с нашего сервера, просто запускался пхп скрипт на сервере которому передавался список файлов, скрипт же возвращал размер на каждый файл, потом это показывалось и грузилось. |
Часовой пояс GMT +4, время: 22:15. |
|
« Предыдущая тема | Следующая тема » |
|
|