PDA

Просмотр полной версии : прелоадер для нескольких jpg


storm_
09.01.2008, 21:55
Господа, надеюсь на ваш опыт.
Проблема такая.....

В флешке происходит презентация фоток.
фотки естественно внешние.
Они плавно появляются и исчезают,
одна за другой.
таким макаром я их замещаю вместо
заранее приведенного в движение holder*

show_mc.slides_mc.holder0.loadMovie("0.jpg");
show_mc.slides_mc.holder1.loadMovie("1.jpg");
show_mc.slides_mc.holder2.loadMovie("2.jpg");
show_mc.slides_mc.holder3.loadMovie("3.jpg");
show_mc.slides_mc.holder4.loadMovie("4.jpg");
show_mc.slides_mc.holder5.loadMovie("5.jpg");
show_mc.slides_mc.holder6.loadMovie("6.jpg");

Может быть кто шарит, как взять getBytesLoaded и
getBytesTotal - каждой фотки, чтобы вычислить
в первом кадре процесс загрузки.

Fernando Costa
09.01.2008, 22:05
смотрите класс movieClipLoader

storm_
09.01.2008, 22:14
может подскажешь..как привязать
этот класс к этому скрипту??
show_mc.slides_mc.holder0.loadMovie("0.jpg");

типа

this.createEmptyMovieClip("clip",0);
var loader:MovieClipLoader=new MovieClipLoader();
loader.loadClip("0.jpg",clip);



просто вот не пойму, как теперь присвоить
o.jpg к holder0 ???

nyctota
09.01.2008, 22:22
В данном коде

this.createEmptyMovieClip("clip",0);
var loader:MovieClipLoader=new MovieClipLoader();
loader.loadClip("0.jpg",clip);

"clip" -- ссылка на клип, в который происходит загрузка. Так что присваивать что надо куда надо _до_ загрузки, а не после.

iNils
09.01.2008, 22:29
storm_, для оформления своего кода, надо использовать теги . Исправте.

storm_
09.01.2008, 22:40
iNils, спасибо за code /code.(Не в курсе я был)))
nyctota.
Спасибо за наводку...
если я правильно понял, то чтобы присвоить моему holder*
*.jpg

var loader:MovieClipLoader=new MovieClipLoader();
loader.loadClip("0.jpg",show_mc.slides_mc.holder0);

так?

проверил уже - не пашет

iNils
09.01.2008, 22:50
Обучени пользованием форумом. Урок 2:
Если, когда хотите что-то добавить, используйте кнопку http://www.flasher.ru/forum/images/russian/style3/buttons/edit.gif и редактируйте последнее сообщение, а не создавайте несколько сообщений подряд.

storm_
09.01.2008, 23:04
iNils, спасибо за обучение.
вот весь код, для наглядности...

var ft = getBytesTotal();
//images downloading:
//с этой частью проблема -
//прелоадер зависает полностью закрашенный,
//пауза,... только потом появляются фотки...
//и не всегда они успевают загрузится...
//что приводит к ползанию по экрану пустых
//клипов((
show_mc.slides_mc.holder0.loadMovie("0.jpg");
show_mc.slides_mc.holder1.loadMovie("1.jpg");
show_mc.slides_mc.holder2.loadMovie("2.jpg");
show_mc.slides_mc.holder3.loadMovie("3.jpg");
show_mc.slides_mc.holder4.loadMovie("4.jpg");
show_mc.slides_mc.holder5.loadMovie("5.jpg");
show_mc.slides_mc.holder6.loadMovie("6.jpg");

//1
s1 = new Sound();
s1.loadSound("1.mp3", false);
//2
s2 = new Sound();
s2.loadSound("2.mp3", false);
//3
s3 = new Sound();
s3.loadSound("3.mp3", false);
//preloader
s1.onLoad = function(ok) {
if (ok) {
clearInterval(interval);
navig.gotoAndStop(2);
music.gotoAndStop(4);
preloader.gotoAndStop(101);
show_mc.slides_mc.gotoAndPlay(2);
}
};
function loader(sound) {
var ft = getBytesTotal();
var s1l = s1.getBytesLoaded();
var s1t = s1.getBytesTotal();
var s2l = s2.getBytesLoaded();
var s2t = s2.getBytesTotal();
var s3l = s3.getBytesLoaded();
var s3t = s3.getBytesTotal();
var pr = int((s1l+s2l+s3l)/(s1t+s2t+s3l)*100);
preloader.gotoAndStop(pr);
}
interval = setInterval(loader, 100, s1);

iNils
09.01.2008, 23:09
storm_, вы совершаете одну общую ошибку. Браузеры по умолчанию имеют ограничение на количество одновременных загрузок. Например, у IE может быть только 2 загрузки одновременно. Это значит, если вы начнете загружать сразу 10 файлов, вы получите данные о размере только от первых двух и пока любой из этих двух файлов не загрузится, данные об остальных файлах не поступят.
Поэтому делать общий процент загрузки можно только, если флешу уже знает об размере загружаемых файлов. Например из xml.

storm_
09.01.2008, 23:14
iNils, вы Проффи.
я и не подозревал про ограничение Браузеров....
блин, чтож делать то???
Нужно, чтобы вся эта муть (7фоток и 3 мп3шки ) были загружены одним
прелоадером извне.
Это возможно вообще?
Заранее спасибо за поддержку.

nyctota
19.01.2008, 03:24
Грузить следующий файл по окончанию загрузки предыдущего. А общий размер узнавать у серверного скрипта.

Bорон
19.01.2008, 03:46
Как и предлагал iNils - пусть в начале работы презентации будет обращение у некому скрипту, который отдаст тебе xml/текст которые в xml отпарсится, содержащий адреса всех картинок и mp3, которые надо загрузить в презентацию, их вес в байтах, и что там тебе еще нужно.
xml естественно формируется сриптом. Скажем перебирающим все файлы в одной папке. Или, например, запускающимся только 1 раз вручную и создающим нужный нам xml.
Потом начинай грузить.
В качестве общего веса используй тот, который дает тебе xml.
А загруженный счbтай как и положено getBytesLoaded().