Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   прелоадер для нескольких jpg (http://www.flasher.ru/forum/showthread.php?t=106352)

storm_ 09.01.2008 21:55

прелоадер для нескольких jpg
 
Господа, надеюсь на ваш опыт.
Проблема такая.....

В флешке происходит презентация фоток.
фотки естественно внешние.
Они плавно появляются и исчезают,
одна за другой.
таким макаром я их замещаю вместо
заранее приведенного в движение 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_, для оформления своего кода, надо использовать теги [code][/code]. Исправте.

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/r...ttons/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().


Часовой пояс GMT +4, время: 17:39.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.