PDA

Просмотр полной версии : как сделать фоновую загрузку динамических фоток?


ukrsonic
14.09.2005, 20:03
Подскажите плиз,

Сделал типа простенькой галлерейки с прелоадером. Хотелось, чтобы пока смотрят одну фотку, остальные загружались в фоновом режиме в память компьютера.

Т.е. чтобы при переходе на следующую картинку, посетителю не нужно было ждать загрузки новой фотки снова.
Спасибо заранее!!!

ukrsonic
15.09.2005, 23:14
КУКУ!

Constantine
15.09.2005, 23:31
Откуда известно сколько времени посетитель будет смотреть фотку?

derhab
17.09.2005, 00:48
Вот так примерно:


//массив со ссылками на подгружаемые картинки
var img_array = ["imge1.jpg", "img2.jpg", "img3.jpg", "img4.jpg", "img5.jpg", "img6.jpg"];
var count = 0;
//создаешь пустой мувик-контейнер для загрузки картинок
this.createEmptyMovieClip("cont_mc", this.getNextHighestDepth());
//убираешь его с глаз долой чтоб не мешал
cont_mc._x = -2000;
cont_mc.onEnterFrame = function() {
//пока в массиве еще есть что то
if (count<img_array.length) {
var t = this.getBytesTotal(), l = this.getBytesLoaded();
//проверяешь загрузилась ли очередная картинка, и если да, грузишь следующую
if (l>=t && l != 0 && t != 0) {
this.loadMovie(img_array[count++]);
}
} else {
//по окончании удаляешь onEnterFrame
delete this.onEnterFrame;
}
};


То есть типа независимо от того скоко времени смотрит юзер картинку они грузятся себе потихоньку в сторонке и кэшируются...при этом все равно конечно нужен прелоадер на те мувики в которые будут загружаться файлы на сцене...нет никакой гарантии, что вызываемая картинка уже в кэше...но вероятность этого есть:)

ukrsonic
17.09.2005, 18:23
ВОт это дельный ответ! Спасиба тебе большое derhab!

7thsky™
17.09.2005, 20:01
А не легче в один и тот же мув загрузить все картинки только на разные уровни, а потом показывать картинку только играясь _visible? а если у чувака кэширование в браузере отключенно?

derhab
17.09.2005, 20:54
Если кэширование отключено, тогда ничего не поможет:)
А если грузить сначала сразу все картинки...то придется ждать не имея возможности начать просмотр

7thsky™
18.09.2005, 00:57
Если кэширование отключено, тогда ничего не поможет:)
А если грузить сначала сразу все картинки...то придется ждать не имея возможности начать просмотр

Зачем ждать? половина галлерей работает так, все картинки начинаются грузиться сразу, либо очередно но по три-четыре сразу, если нужная картинка загрузилась то ее и показываем

derhab
18.09.2005, 01:14
да я и не предлагаю ждать...я имею ввиду что, например, в галерее есть несколько разделов, сначала открывается первый...картинки первого раздела грузятся тут же с отображением загрузки, все дела...НО, в то же время в фоновом режиме можно грузить в отдельный клип картинки для других разделов, которые будут открыты позже

Cloo
03.11.2005, 12:29
О! РИальная тема! :)
Усложним задачу - а если количество элементов массива - то бишь подгружаемых изображений - заранее неизвестно?..
Да и применение массива тут, в общем-то, необязательно - можно генерировать имена динамически по определённому шаблону.
Но вот затык - как узнать, что подгружаемое изображение является последним и выполнять загрузку больше не надо?
onLoadError срабатывает после обращения к несуществующему файлу.. то есть, надо как-то предварительно в фоне всё загрузить, определить количество изображений и выдать их в галерею..

Конечная цель такая: на сервере есть папочка, в которой хранится произвольное количество изображений с шаблонными именами, при заходе на сайт все имаджи подгружаются на фоне и выдаются в галерею с кнопочками next/previous..
Конечно, проблема сразу исчезает, если там же будет лежать файлик всего с одной переменной, указывающей количество изображений, но клиент может забыть поменять его.. да и вообще это не универсально :)

Kinsler
03.11.2005, 13:01
ну вообще я как-то бился над этой проблемой
вообщем я не так крут как хотелось бы :)
но решения ее методами флеша не нашел, кроме переменной записанной вручную
единственное что мне пришло на ум, это определять кол-во фотографий чем либо (php, asp) и передавать во флеш...все :(

unlexx
03.11.2005, 13:34
а вообще не корректно грузить фоново трафик пользователя, он может посмотреть одну фотку плюнуть и уйти... а вы ему всю галлерею на 5 Гб закачали :)

Cloo
03.11.2005, 14:00
Это даа :) Поэтому грузить лучше вначале всё сразу..
...
У меня есть мысли некоторые, как только на флеше это сделать.. попозже напишу..