Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   размеры загруженного jpg? (http://www.flasher.ru/forum/showthread.php?t=55151)

Iv 27.02.2004 08:54

2Штрек
- сносится всё.

Штрек 27.02.2004 08:54

Цитата:

Оригинал написал(а) Nox Noctis
АХА ! попался ! :))

в этом коде ноль равен нулю, потому что загрузка еще НЕ НАЧАЛАСЬ :)

Как же не началась, когда с реальным джипегом трейсится реальная ширина. :confused:

Nox Noctis 27.02.2004 08:54

2BitSky
я давно этим пользуюсь, но как-то не задумывался над теорией... у мня несколько удивило что ты на эти грабли не наступал еще.. :)

получается то у загрузки есть пауза в один кадр.
то есть даже если все грузится моментально - то один кадр с момента вызова проходит вхолостую..

это странно, да..

но с другой стороны - загрузка ведь идет рывками.. "порциями".. может на каждую такую "порцию" требуется пауза в один кадр.. или что-то вроде

думаю что отгадать как там это на самом деле - нереально.. это в архитектуре плеера глубоко

Nox Noctis 27.02.2004 09:09

Цитата:

Оригинал написал(а) Штрек
когда с реальным джипегом трейсится реальная ширина.
Код:

this.createTextField("TF", 2, 0,0,0,0)
TF._width = Stage.width
TF._height = Stage.height
TF.multiline = true
TF.autoSize = true
TF.textColor = 0xff6600
TF.text = "loading started";
//
this.createEmptyMovieClip("img", 1)
img._x = Stage.width/2
img._y = Stage.height/2
img.loadMovie("BLABLABLA.jpg");
frames = 1;
this.onEnterFrame = function() {       
        var l = img.getBytesLoaded();
        var t = img.getBytesTotal();
        //
        var neo = "\n "+frames++;
        neo += " : "+"l["+l+"]  t["+t+"]";
        neo += " __ w["+img._width+"]  h["+img._height+"]";
        //
        TF.text += neo;
        TF.scroll = TF.maxscroll;
        //
        if (l && t && l>=t) {
                TF.text += "\nloading finished";
                delete this.onEnterFrame;
        }
};

посмотри что выводится... высота и ширина определяются только по окончании загрузки.

кстати, на днях наткнулся на один баг, который мня просто убивает...

1. делаем новый мувик под шестёрку.
2. в нём пишем вышеприведённый код
3. паблишим под шестёрку, но проигрываем в редакторе МХ2004

...и наблюдаем, что иногда (не всегда) перед началом загрузки успевает определиться тотальный размер -1. то есть как будто файла вообще нет. а иногда размер определяется так и несколько кадров подряд...

из редактора шестерки этот баг никогда не наблюдался, и при запуске в сети/из стандалоунового плеера тоже нет..

Штрек 27.02.2004 09:15

Re: размеры загруженного jpg?
 
Цитата:

Оригинал написал(а) Pogreb
потом я делаю из этого клипа -
кнопку по размеру загруженой картинки:
. .

А зачем тебе для кнопки размер?
Что сам мувик не может стать кнопкой?
Раз там при загрузке все обработчики сносит,
ставь обработчики, типа onRollOver когда отработает прелоад.

Штрек 27.02.2004 09:27

В этом коде
this.createEmptyMovieClip("mc", 0);
this.mc.loadMovie("pic.JPG");
this.onEnterFrame = function() {
if (this.mc.getBytesLoaded() == this.mc.getBytesTotal()) {
trace(this.mc._width);
delete this.onEnterFrame;
}
};
если грузить реальную картинку, трейсится
РЕАЛЬНАЯ ширина, а раз так, то не 0==0,
а реальн.загрузка == весу джипега.
Вот на это я и просил обратить внимание. ;)

Iv 27.02.2004 09:38

обратили уже

Pogreb 27.02.2004 10:55

всем, всем, всем!
Спасибо Вам огромное, что ответили на мой вопрос.
Я, действительно проверял размер картинки не проверяя ее загрузки, а просто в следующей строке.

После того как получил первый ответ, я попробовал определить размеры картинки в следующих кадрах,
но только в третьем кадре обнаружил ответ.
причем кадр будет другой если снизить колличество кадров
в секунду.

Ипосле этого я сразуже написал
this.onEnterFrame() =function{

if (mc_img._width!=0){run();}
}

Pogreb 27.02.2004 11:15

... т.е.
если ширина клипа, в который загружается картинка
не равна нулю, то значит картинка загрузилась.

А вообще я скажу зачем мне все это надо было:

Я делаю прокручивающийся список иконок(jpg),
нажимая на которые можно будет загружать большие
картинки.
Этот список строется динамически:
Компонент открывает XML, где перечислены названия файлов (jpg),
и описания к большим картинам,
определяет колличество, загружает иконки в специальный клип - контейнер, выстраивает иконки вряд, делает из них кнопки, и подписывает их.
Затем рисует и применяет к контейнеру маску, определенной фомы и наконец позволяет их прокручивать в контейнере.

Расположение контейнера он берет у заранее нарисованного
на сцене квадратика - клипа.

Если размеры какой нибудь конки изменились, то он мгновенно
сдваигает все остальные картинки.

Вот для этого и нужно мне было знать размеры загружаемых иконок.
Всего доброго Всем!

Nox Noctis 27.02.2004 11:36

Цитата:

Оригинал написал(а) Штрек
если грузить реальную картинку, трейсится
РЕАЛЬНАЯ ширина, а раз так, то не 0==0,
а реальн.загрузка == весу джипега.
Вот на это я и просил обратить внимание. ;)

че-та я не понимаю о чем речь :) при чем тут реальные размеры картинки ? :) это ДО того как ее погрузили - будет ноль равен нулю. в этом коде. и trace(this.mc._width); выдаст текущий размер клипа (у нас он пустой - а мог быть чем-то заполненный)

Цитата:

Оригинал написал(а) Pogreb
... т.е.
если ширина клипа, в который загружается картинка
не равна нулю, то значит картинка загрузилась.

этот метод прокатит только тогда, когда ты точно знаешь что размер клипа, в который ты грузишь ее - равен нулю. если у тебя до загрузки в клипе что-то было, то этот метод даст ошибку


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

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