Просмотр полной версии : Я знаю что вопрос тупой, но блин не получается :(
rojok-online
05.12.2003, 14:32
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;
}
};
Почему не происходит загрузка ?!?! :(
Nox Noctis
05.12.2003, 14:37
первые две строчки скрипта поменяй местами :)
rojok-online
05.12.2003, 14:41
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" не изменяет формы по оси "х"
Nox Noctis
05.12.2003, 15:10
в первые кадры после начала загрузки у тебя скорее всего total и loaded равны нулю. и то и другое. поэтому сразу срабатывает как будето все загрузилось уже.
напиши вместо if (total<loaded) {
if (total && loaded && loaded>=total) {
sergwizard
06.12.2003, 03:40
напиши вместо if (total<loaded) {
if (total && loaded && loaded>=total) {
Зуб на отсечение даю: - Nox сейчас пьян вдребезги. :D
2rojok-online
Таким способом ты не отследишь загрузку картинки. Так ты только измеряешь "вес" ПУСТОГО МС "site". А пустой он загружается мгновенно, то есть total = loaded.
Nox Noctis
06.12.2003, 11:52
Оригинал написал(а) sergwizard
пьян вдребезгитолька не нада грязи :))
че-то ты непонятное говоришь по=моему... все работает же, если проверку правильную поставить :)
sergwizard
07.12.2003, 00:51
толька не нада грязи :))
че-то ты непонятное говоришь по=моему... все работает же, если проверку правильную поставить :)
А где здесь грязь? Никакой грязи. Вчера ты, сегодня – я. Но мы же просто так, - у нас повод есть. Причина. Уважительная. Имеем право.
А вот как проверку правильную поставить, - в этом-то и вопрос.
А насчет непонятностей…. Ну, давай представим себе такую ситуацию:
Ставим на весы некий сосуд. Вес самого сосуда считаем равным 0. Затем тонкой, но непрерывной струйкой льем в нее (для чистоты эксперимента) воду. И постоянно, с интервалом в 1/30 секунды отслеживаем ОБЩИЙ вес, и ЗАГРУЖЕННЫЙ вес. И что мы видим? Что ОБЩ.(total) и ЗАГ.(loaded) все время растут (до тех пор, пока сосуд не наполнится). Но, между собой – естественно – равны.
- Ага, говоришь ты, - а какой емкости этот сосуд? Если этот сосуд, допустим, 2 литра, то ОБЩ(total) должно быть 2000 гр. И тогда мы запросто можем отследить процент загруженности этого сосуда. Верно! Но для этого мы заранее должны знать емкость сосуда. Но мы же грузим картинку в ПУСТОЙ MovieClip. А он – безразмерный. И мы можем грузить в него картинку весом 3 Kb, а можем и 200 Kb.
Ну и как теперь нам это все отследить и посчитать? Как нам "проверку правильную поставить"? Наверное, есть способ. Но только не тот, который предлагает rojok-online. Мало того что он бесполезный, но в нем еще грубейшая ошибка: "if (total<loaded) {". То есть, если ОБЩЕЕ меньше ЧАСТИ…
"И твои исправления: "if (total && loaded && loaded>=total) {" (что это – вообще - означает?) ничего не исправляют в данной ситуевине.
Вот просплюсь, отрезвею, и тогда что-нибудь более толковое сообщу.
Если смогу.
Nox Noctis
08.12.2003, 12:39
я может не понял о чем мы тут спорим ? :))
Оригинал написал(а) sergwizard
if (total && loaded && loaded>=total) {это... че-то я не понимаю в чем загвоздка :)
при загрузке чего-то в клип, размер этого "чего-то" определяется как только приходит первая порция данных. но даже если бы это было не так... это же в принципе ничего не меняет. такая проверка - просто универсальный вариант
if (total && loaded && loaded>=total) {
означает:
— если тотал и лоадед определены и не равны нулю
— и если лоадед не меньше тотал
смущает что вторая часть со знаком >= ?
это для того чтобы не было косяков с загрузкой в клип созданный руками в таймлайне а не скриптом. (потому как тогда общий размер "пустого" клипа - 4 байта, а не ноль)
sergwizard
08.12.2003, 23:11
Может быть, я не совсем ясно объяснился. Попробую еще раз.
Когда мы используем loadMovie и подгружаем swf файл, то плэйер считывает в заголовке swf файла его размер. То есть, getBytesTotal() - известная величина. И теперь мы можем спокойно сравнивать getBytesTotal() и getBytesLoaded(), и вытворять на основе этих сравнений все, что нам угодно.
Но, когда мы подгружаем jpg, у нас (у плэйера) нет информации о размере файла. И для него, при каждом onEnterFrame измерении оказывается, что getBytesTotal() и getBytesLoaded() таргета равны между собой. И использовать проверку if (total && loaded && loaded>=total) { - просто бессмысленно.
Nox Noctis
09.12.2003, 01:37
Оригинал написал(а) sergwizard
Но, когда мы подгружаем jpg, у нас (у плэйера) нет информации о размере файла. И для него, при каждом onEnterFrame измерении оказывается, что getBytesTotal() и getBytesLoaded() таргета равны между собой. И использовать проверку if (total && loaded && loaded>=total) { - просто бессмысленно. либо мы до сих пор каким-то чудом говорим о разном - либо это глу-пос-ти :)
я этим пользовался ооочень много раз, и оно работает как надо.
смотрим:
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;
};
sergwizard
09.12.2003, 19:03
Да, Nox, мы говорили об одном и том же, и надо признать, что я – в отличие от тебя – говорил глу-по-сти! Признаю это с радостью.
В свое время я пытался найти в jpg байты, отвечающие за размер файла. Так и не нашел. Проверку подгружаемых картинок проверял только локально, включая опцию "Show Streaming". Ни хрена не показывало процесса. И я, поникнув гордой головою, скукожившись и заскучав, поверил в то, что процесс подгрузки jpg не отследить.
Снимаю все свои грязные обвинения по поводу твоего нетрезвого образа жизни. :) И выражаю тебе горячую благодарность за то, что ткнул меня носом. :) Как говорил Клетчатый: "…, век учиззь." :D
Nox Noctis
10.12.2003, 12:19
Оригинал написал(а) sergwizard
ткнул меня носом. :)тока не нада обижаться :)
просто ты так уверенно отстаивал байты джипега, что я сам чуть было не засомневался :))
YuriiZelenev
11.12.2003, 01:45
if(percent==100){bla_false;}else{bla_true;}
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.