![]() |
размеры загруженного jpg?
кто то же должен знать?
В динамически созданный клип загружаем jpg и проверяем размеры клипа myClip._width, myClip._height !! они не изменились. == 0 потом я делаю из этого клипа - кнопку по размеру загруженой картинки: . . . загружаю через XML размеры картинки, набранные вручную и програмно рисую квадрат, для того, чтобы изменить размеры клипа но это же извращение! У меня 50 картинок - представьте размер XML файла. на Вас последняя надежда. |
до тех пор пока картинка не загрузится полностью - нельзя определить ее габариты.
точка. сначала проверяешь что всё загрузилось, потом только спрашиваешь ширину и высоту клипа |
Все тот же вопрос:
допустим картинка загрузилась полностью. А как обратится к ней, что бы узнать ее размер? сам файл для загрузки называется image.jpg, загружается в клип myClip. И как же узнать ее свойства? _root.myClip.image._width ? или _root.myClip._width ? И как узнать под каким именем находится картинка в клипе, И загруженые картинки становятся клипами? |
при загрузке чего-то в клип, ты просто заменяешь все содержимое контейнера с каким-то именем на другое. картинка это или свфка - не важно. имя грузимого файла не играет дальше никакой роли. есть только имя клипа, содержащего загруженный объект.
|
маленькое добавление:
размеры картинки будут доступны только в следующем, после загрузки, кадре. |
Цитата:
эти свойства будут доступну в том кадре, в котором getBytesTotal станет равным getBytesLoaded... не так и важно когда там картинка загрузилась (загрузка ведь процесс асинхронный фреймрейту) - главное что как только getBytesTotal == getBytesLoaded, так сразу можно пользоваться высотой и шириной картинки. |
ты бы проверял, прежде чем обвинять меня во лжи %)
- истинно глаголю: Код:
this.createEmptyMovieClip("mc", 0); |
АХА ! попался ! :))
в этом коде ноль равен нулю, потому что загрузка еще НЕ НАЧАЛАСЬ :) то есть ты сравниваешь количества байт исходного (в данном случае пустого) мувика друг с другом и удаляешь ентерФрейм с чистой совестью, хотя загрузка-то еще даже не началась :) если не веришь - сделай трейс того что происходит при загрузке не удаляя онЕнтерФрейм по "окончании"... увидишь что первым всегда трейсятся исходные байты, еще без учёта загрузки. зы: а я проверил :) хотя и был уверен... но на всякий пожарный... |
Всё хотел спросить
loadMovie("test.jpg", _root.mc); _root.mc.onEnterFrame = function() { trace("Оп"); }; Т.е. на мувике в который грузим onEnterFrame срабатывает один раз, а onData вообще не фурычит? |
хм...
весьма странно.. и интересненько.. и дело даже не в том, чем это кончается, а в том, что загрузка еще не началась.... onEnterFrame задаем в том же кадре, что и даем команду на загрузку, и та и другая должны начать исполняться одновременно. почему же этого фактически не происходит? хм.. чешу репу. |
2Штрек
- сносится всё. |
Цитата:
|
2BitSky
я давно этим пользуюсь, но как-то не задумывался над теорией... у мня несколько удивило что ты на эти грабли не наступал еще.. :) получается то у загрузки есть пауза в один кадр. то есть даже если все грузится моментально - то один кадр с момента вызова проходит вхолостую.. это странно, да.. но с другой стороны - загрузка ведь идет рывками.. "порциями".. может на каждую такую "порцию" требуется пауза в один кадр.. или что-то вроде думаю что отгадать как там это на самом деле - нереально.. это в архитектуре плеера глубоко |
Цитата:
Код:
this.createTextField("TF", 2, 0,0,0,0)кстати, на днях наткнулся на один баг, который мня просто убивает... 1. делаем новый мувик под шестёрку. 2. в нём пишем вышеприведённый код 3. паблишим под шестёрку, но проигрываем в редакторе МХ2004 ...и наблюдаем, что иногда (не всегда) перед началом загрузки успевает определиться тотальный размер -1. то есть как будто файла вообще нет. а иногда размер определяется так и несколько кадров подряд... из редактора шестерки этот баг никогда не наблюдался, и при запуске в сети/из стандалоунового плеера тоже нет.. |
Re: размеры загруженного jpg?
Цитата:
Что сам мувик не может стать кнопкой? Раз там при загрузке все обработчики сносит, ставь обработчики, типа onRollOver когда отработает прелоад. |
В этом коде
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, а реальн.загрузка == весу джипега. Вот на это я и просил обратить внимание. ;) |
обратили уже
|
всем, всем, всем!
Спасибо Вам огромное, что ответили на мой вопрос. Я, действительно проверял размер картинки не проверяя ее загрузки, а просто в следующей строке. После того как получил первый ответ, я попробовал определить размеры картинки в следующих кадрах, но только в третьем кадре обнаружил ответ. причем кадр будет другой если снизить колличество кадров в секунду. Ипосле этого я сразуже написал this.onEnterFrame() =function{ if (mc_img._width!=0){run();} } |
... т.е.
если ширина клипа, в который загружается картинка не равна нулю, то значит картинка загрузилась. А вообще я скажу зачем мне все это надо было: Я делаю прокручивающийся список иконок(jpg), нажимая на которые можно будет загружать большие картинки. Этот список строется динамически: Компонент открывает XML, где перечислены названия файлов (jpg), и описания к большим картинам, определяет колличество, загружает иконки в специальный клип - контейнер, выстраивает иконки вряд, делает из них кнопки, и подписывает их. Затем рисует и применяет к контейнеру маску, определенной фомы и наконец позволяет их прокручивать в контейнере. Расположение контейнера он берет у заранее нарисованного на сцене квадратика - клипа. Если размеры какой нибудь конки изменились, то он мгновенно сдваигает все остальные картинки. Вот для этого и нужно мне было знать размеры загружаемых иконок. Всего доброго Всем! |
Цитата:
Цитата:
|
|
| Часовой пояс GMT +4, время: 15:28. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.