PDA

Просмотр полной версии : preload для презентации


ZergMaster
22.11.2008, 19:48
Товарищи, помогите справиться с проблемой пожалуйста.

Я делаю прелоадер для презентации, состоящей из шести по разному сменяющих друг друга картинок. Намучился с ним уже. Ни внешний, ни внутренний не срабатывает. То есть, он ждет, когда bytesLoaded=bytesTotal, и запускается только после этого, но проигрывается все равно урывками и короче неправильно.
Вы не подскажете, в чем может быть проблема? Может быть дело в том, что те шесть картинок не в библиотеке презентации, а подгружаются динамически из соседней папки?

chingachgoog
22.11.2008, 23:49
Средствами одного флеша тут не справиться: он "замораживается" при загрузке с хард-диска и анимацию прогресс-бара не видно.

http://www.flasher.ru/forum/showpost.php?p=727980&postcount=19

ZergMaster
24.11.2008, 00:30
то бишь, как я понял, это неосуществимо?... хм.
Я вот пробую заморочиться так, чтобы делать загрузку всех подгружаемых картинок одновременно с загрузкой самого мувика, чтобы их btotal и bload складывались,образуя один прогресс бар...
Проект надо доделывать к понедельнику.... Так что ещё отпишусь. Глядишь что и выйдет.

Добавлено через 18 часов 44 минуты
Между тем либо меня глючит, либо я таки нашел решение. При проверке, по крайней мере, все работает.
Решить эту задачу получилось при помощи внутреннего прелоадера. Поскольку проблема была в том, что все картинки загружались отдельно, поэтому получалась неразбериха в кадрах и фильм шел рывками, я решил забить все картинки (6 штук) в один loader при помощи MovieClipLoader. Так как они загружаются параллельно, а не поочередно, то даже не пришлось складывать все их byteloader'ы и total'ы. То есть можно было сделать так: (pig1.bytesLoaded/pig1.bytesTotal+pig2.bytesLoaded/pig2.bytesTotal+pig3.bytesLoaded/pig3.bytesTotal+pig4.bytesLoaded/pig4.bytesTotal)/4
чтобы найти средний процент загрузки, который выводился бы в textField и являлся _xscale loading-поля.
Вообщем решение пришло неожиданно и как всегда работает непонятно от чего. Но оно проще, чем описанное. Вот:

var loader:MovieClipLoader=new MovieClipLoader();
var listener:Object={}
loader.addListener(listener);

loader.loadClip("img/img1.jpg", pig1);
loader.loadClip("img/img2.jpg", pig2);
loader.loadClip("img/img3.jpg", pig3);
loader.loadClip("img/img4.jpg", pig4);
loader.loadClip("img/img5.jpg", pig5);
loader.loadClip("img/img6.jpg", pig6);

listener.onLoadStart=function():Void {
_root.createTextField("preloader", 10234, 250,100,40,18);
preloader.border = true;
preloader.text ="0%";
_root.stop();
};
listener.onLoadProgress=function(clip:MovieClip, bytesLoaded:Number, bytesTotal:Number):Void {
preloader.text= Math.round(bytesLoaded/bytesTotal*100)+"%";
var persent:Number = Math.round(bytesLoaded/bytesTotal*100)
poloska._xscale= persent;
};
listener.onLoadComplete=function():Void {
_root.gotoAndPlay(2);
preloader.removeTextField();
poloska._visible=false;
}


pig1,2,3,4,5,6 - это пустые клипы контейнеры, в которые загружаются картинки. Все эти клипы есть во флэшке уже с первого кадра, просто в невидимом состоянии, чтобы флэшь начинала подгружать их картинки сразу при загрузке первого кадра. Иначе косяк.
preloader- поле, которое отображает проценты циферками, а а клип poloska - синий прямоугольничек, _xscale которой равно процентам.
при начале загрузки картинок клип останавливает проигрывание. При завершении загрузки - идет и проигрывает клип со второго кадра.) А заодно прячет прогресс-бар.
Вообщем вроде как все правильно.