Просмотр полной версии : как сделать фоновую загрузку динамических фоток?
ukrsonic
14.09.2005, 20:03
Подскажите плиз,
Сделал типа простенькой галлерейки с прелоадером. Хотелось, чтобы пока смотрят одну фотку, остальные загружались в фоновом режиме в память компьютера.
Т.е. чтобы при переходе на следующую картинку, посетителю не нужно было ждать загрузки новой фотки снова.
Спасибо заранее!!!
ukrsonic
15.09.2005, 23:14
КУКУ!
Constantine
15.09.2005, 23:31
Откуда известно сколько времени посетитель будет смотреть фотку?
Вот так примерно:
//массив со ссылками на подгружаемые картинки
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!
А не легче в один и тот же мув загрузить все картинки только на разные уровни, а потом показывать картинку только играясь _visible? а если у чувака кэширование в браузере отключенно?
Если кэширование отключено, тогда ничего не поможет:)
А если грузить сначала сразу все картинки...то придется ждать не имея возможности начать просмотр
Если кэширование отключено, тогда ничего не поможет:)
А если грузить сначала сразу все картинки...то придется ждать не имея возможности начать просмотр
Зачем ждать? половина галлерей работает так, все картинки начинаются грузиться сразу, либо очередно но по три-четыре сразу, если нужная картинка загрузилась то ее и показываем
да я и не предлагаю ждать...я имею ввиду что, например, в галерее есть несколько разделов, сначала открывается первый...картинки первого раздела грузятся тут же с отображением загрузки, все дела...НО, в то же время в фоновом режиме можно грузить в отдельный клип картинки для других разделов, которые будут открыты позже
О! РИальная тема! :)
Усложним задачу - а если количество элементов массива - то бишь подгружаемых изображений - заранее неизвестно?..
Да и применение массива тут, в общем-то, необязательно - можно генерировать имена динамически по определённому шаблону.
Но вот затык - как узнать, что подгружаемое изображение является последним и выполнять загрузку больше не надо?
onLoadError срабатывает после обращения к несуществующему файлу.. то есть, надо как-то предварительно в фоне всё загрузить, определить количество изображений и выдать их в галерею..
Конечная цель такая: на сервере есть папочка, в которой хранится произвольное количество изображений с шаблонными именами, при заходе на сайт все имаджи подгружаются на фоне и выдаются в галерею с кнопочками next/previous..
Конечно, проблема сразу исчезает, если там же будет лежать файлик всего с одной переменной, указывающей количество изображений, но клиент может забыть поменять его.. да и вообще это не универсально :)
ну вообще я как-то бился над этой проблемой
вообщем я не так крут как хотелось бы :)
но решения ее методами флеша не нашел, кроме переменной записанной вручную
единственное что мне пришло на ум, это определять кол-во фотографий чем либо (php, asp) и передавать во флеш...все :(
а вообще не корректно грузить фоново трафик пользователя, он может посмотреть одну фотку плюнуть и уйти... а вы ему всю галлерею на 5 Гб закачали :)
Это даа :) Поэтому грузить лучше вначале всё сразу..
...
У меня есть мысли некоторые, как только на флеше это сделать.. попозже напишу..
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.