![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
|
|||||
this.onEnterFrame = function() {
site.loadMovie("1.jpg");
var loaded = site.getBytesLoaded();
var total = site.getBytesTotal();
var percent = Math.floor((loaded/total)*100);
bar._xscale = percent;
stat.text = percent+" %";
if (total<loaded) {
site._visible = false;
} else {
site._visible = true;
delete this.onEnterFrame;
}
};
![]() |
|
|||||
|
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
первые две строчки скрипта поменяй местами :)
|
|
|||||
site.loadMovie("1.jpg");
this.onEnterFrame = function() {
var loaded = site.getBytesLoaded();
var total = site.getBytesTotal();
var percent = Math.floor((loaded/total)*100);
bar._xscale = percent;
stat.text = percent+" %";
if (total<loaded) {
site._visible = false;
} else {
site._visible = true;
delete this.onEnterFrame;
}
};
проценты не увелич от 0 до 100, а сразу показывает 100%, и "bar" не изменяет формы по оси "х" |
|
|||||
|
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
в первые кадры после начала загрузки у тебя скорее всего total и loaded равны нулю. и то и другое. поэтому сразу срабатывает как будето все загрузилось уже.
напиши вместо if (total<loaded) { if (total && loaded && loaded>=total) { |
|
|||||
|
Регистрация: Jan 2002
Адрес: СПб-Denver-Лермонтов
Сообщений: 1,525
|
Цитата:
2rojok-online Таким способом ты не отследишь загрузку картинки. Так ты только измеряешь "вес" ПУСТОГО МС "site". А пустой он загружается мгновенно, то есть total = loaded.
__________________
Для того чтобы узнавать, есть два способа: - задавать вопросы и пытаться самому на них ответить. Второй способ более продуктивный. (S.Wizard) |
|
|||||
|
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
Цитата:
че-то ты непонятное говоришь по=моему... все работает же, если проверку правильную поставить :) |
|
|||||
|
Регистрация: Jan 2002
Адрес: СПб-Denver-Лермонтов
Сообщений: 1,525
|
Цитата:
А вот как проверку правильную поставить, - в этом-то и вопрос. А насчет непонятностей…. Ну, давай представим себе такую ситуацию: Ставим на весы некий сосуд. Вес самого сосуда считаем равным 0. Затем тонкой, но непрерывной струйкой льем в нее (для чистоты эксперимента) воду. И постоянно, с интервалом в 1/30 секунды отслеживаем ОБЩИЙ вес, и ЗАГРУЖЕННЫЙ вес. И что мы видим? Что ОБЩ.(total) и ЗАГ.(loaded) все время растут (до тех пор, пока сосуд не наполнится). Но, между собой – естественно – равны. - Ага, говоришь ты, - а какой емкости этот сосуд? Если этот сосуд, допустим, 2 литра, то ОБЩ(total) должно быть 2000 гр. И тогда мы запросто можем отследить процент загруженности этого сосуда. Верно! Но для этого мы заранее должны знать емкость сосуда. Но мы же грузим картинку в ПУСТОЙ MovieClip. А он – безразмерный. И мы можем грузить в него картинку весом 3 Kb, а можем и 200 Kb. Ну и как теперь нам это все отследить и посчитать? Как нам "проверку правильную поставить"? Наверное, есть способ. Но только не тот, который предлагает rojok-online. Мало того что он бесполезный, но в нем еще грубейшая ошибка: "if (total<loaded) {". То есть, если ОБЩЕЕ меньше ЧАСТИ… "И твои исправления: "if (total && loaded && loaded>=total) {" (что это – вообще - означает?) ничего не исправляют в данной ситуевине. Вот просплюсь, отрезвею, и тогда что-нибудь более толковое сообщу. Если смогу.
__________________
Для того чтобы узнавать, есть два способа: - задавать вопросы и пытаться самому на них ответить. Второй способ более продуктивный. (S.Wizard) |
|
|||||
|
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
я может не понял о чем мы тут спорим ? :))
Цитата:
при загрузке чего-то в клип, размер этого "чего-то" определяется как только приходит первая порция данных. но даже если бы это было не так... это же в принципе ничего не меняет. такая проверка - просто универсальный вариант if (total && loaded && loaded>=total) { означает: — если тотал и лоадед определены и не равны нулю — и если лоадед не меньше тотал смущает что вторая часть со знаком >= ? это для того чтобы не было косяков с загрузкой в клип созданный руками в таймлайне а не скриптом. (потому как тогда общий размер "пустого" клипа - 4 байта, а не ноль) Последний раз редактировалось Nox Noctis; 08.12.2003 в 12:50. |
|
|||||
|
Регистрация: Jan 2002
Адрес: СПб-Denver-Лермонтов
Сообщений: 1,525
|
Может быть, я не совсем ясно объяснился. Попробую еще раз.
Когда мы используем loadMovie и подгружаем swf файл, то плэйер считывает в заголовке swf файла его размер. То есть, getBytesTotal() - известная величина. И теперь мы можем спокойно сравнивать getBytesTotal() и getBytesLoaded(), и вытворять на основе этих сравнений все, что нам угодно. Но, когда мы подгружаем jpg, у нас (у плэйера) нет информации о размере файла. И для него, при каждом onEnterFrame измерении оказывается, что getBytesTotal() и getBytesLoaded() таргета равны между собой. И использовать проверку if (total && loaded && loaded>=total) { - просто бессмысленно.
__________________
Для того чтобы узнавать, есть два способа: - задавать вопросы и пытаться самому на них ответить. Второй способ более продуктивный. (S.Wizard) |
|
|||||
|
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
Цитата:
я этим пользовался ооочень много раз, и оно работает как надо. смотрим: http://slaindream.dyp.spb.ru/load_jpg.html (там подгружается картинка на триста кило, с модема все оч наглядно) в исходнике только текстовое поле и вот этот код: this.createEmptyMovieClip("test", 1);
test._x = int(TF._x+TF._width);
test._y = int(TF._y);
TF.text += "click !\n\n";
this.onMouseDown = function() {
TF.text += "___loading started___\n";
test.loadMovie("_beer.jpg");
this.onEnterFrame = function() {
var l = test.getBytesLoaded();
var t = test.getBytesTotal();
TF.text += "...\ttotal: "+t+" loaded: "+l+"\n";
if (l && t && l>=t) {
delete this.onEnterFrame;
TF.text += "___loading finished___";
}
TF.scroll = TF.maxscroll;
};
delete this.onMouseDown;
};
|
![]() |
Часовой пояс GMT +4, время: 13:31. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|