![]() |
XML слайд-шоу: определение и изменение размеров изображений
Размера, в смысле ширины и длины. То есть имеем динамическую загрузку xml и последовательную загрузку картинок в клип по нажатию на определенные кнопки. Примерно так:
Код AS1/AS2:
|
Цитата:
Код AS1/AS2:
Код AS1/AS2:
|
Естественно, после загрузки каждого изображения. Некорректно выразился. К вашему примеру. Я как раз использую класс loadMovieClip. В этой части мой код немного проще, по-сути, отлавливается только событие onLoadComplete (не используется предзагрузчик - десктопное приложение) и как будто бы все понятно (хотя хотелось бы поподробней что есть Tweener.addTween). Но что делать после onLoadComplete? img_conteiner создается при помощи createEmptyMovieClip(), а простая проверка окончания загрузки каждого изображения
Код AS1/AS2:
|
Попробуйте использовать событие onLoadInit вместо onLoadComplete.
|
Попробуйте в поиске набрать "слайд-шоу". Право, сударь, это один из самых обсуждаемых вопросов.
|
Код AS1/AS2:
А дальше можно скалить изображение для подгонки под размеры "сцены", на случай если изображения будут произвольной величины. |
onLoadInit решило проблему. Всем спасибо!
|
Не думал я, что снова придется поднимать эту тему...
Но возникла новая проблема. Суть ее в следующем: в слайд-шоу предусмотрена возможность изменения размера картинок. То есть имеем ролик размера 800Х600. Размеры картинок передаются из атрибутов XML. На событие onLoadInit повесил код со сложным ветвлением, вычисляющий какого размера должна быть картинка: если ее ширина и длина больше, чем 800Х600 - она ужимается, если меньше - выводится без изменений. Весь код обработчика довольно длинный, приведу фрагмент, используемый в случае, если картинка больше 800Х600 Код AS1/AS2:
page_mc - клип, в который загружается изображение. Ему принудительно назначается ширина 800 (в случае, если ширина больше высоты), а высота вычисляется в зависимости от величины scale, которая характеризует, во сколько раз ширина картинки больше ширины ролика. Все это очевидно и тривиально. Программа замечательно работала с картинками 400х400, 400х600, 800х600 и т.д. Самая большая картинка была 2848х2136, самая нестандартная 2592х3888. Радость моя кончилась, когда в папку были добавлены изображения 3888х2592. Что произошло? Значительная область с правой стороны оказалась просто срезанной, не ужатой, а именно срезанной; она исчезла, а картинка, не взирая на то, что она в разы шире чем 800, видимо за счет того, что изрядный кусок канул где-то в черной дыре, растянулась по ширине! Если же изменить реальный размер картинки, например, до испытанных уже 2848х2136, не исправляя ничего в XML (а если исправить, то и подавно), все выводится как положено. И еще один загадочный, почти мистический момент. Если мы после строчки, где задается page_mc._width = 800, поставим trace(page_mc._width ), выводить будет (при загрузке картинок) 800, 799.99, 799.95, 800, 799.99. И это при том, что 800 задано принудительно! Вот такая повесть получилась, почти роман. Кому было интересно, прошу поделиться соображениями. |
Ну я бы попробовал _yscale / _xscale вместо _width / _height. Затем, возможно существует ограничение по размеру картинки, ограничение по битмапу же есть (2880 пикселей по любой стороне). На счет размеров, писал много раз что флеш весьма неточен, он переводит число в двоичный код, а потом обратно, отсюда и погрешность, хотя вобщем то это ж незаметно в данном случае.
З.Ы. а зачем размер каринки пиать в хмл если пользуетесь мувиклиплоадером?..можно ж узнавать при загрузке и оттуда плясать (меньше букавак в хмл, а в код всего + 2 строчки) |
Предположение об ограничении размера картинки действительно выглядит правдоподобным, поскольку я уже говорил, что при уменьшении ширины изображения до 2848 все работает нормально. И у меня были предположения на этот счет. Но где можно поподробнее прочитать об этих ограничениях? Откуда взялось число 2880? В мануале вроде не встречал.
По поводу данных из атрибутов XML. Вначале я и не собирался прописывать там ширину и высоту картинки, полагая, что при каждой загрузке функция сама будет возвращать текущий размер. Однако, вероятно, существует какая-то тонкость, которую я не уловил, заключающаяся в том, что размер (_width) не каждой картинки определялся корректно (возможно, из-за той погрешности, о которой упомянул nOobCrafter). Поэтому и упростил таким образом. И последнее. Почему _yscale / _xscale кажется предпочтительней? Не дают погрешности? |
Про ограничение на битмапу можно почитать тут, выбираешь соответственно раздел битмапдата http://help.inils.ru/flash8/
Код AS1/AS2:
Цитата:
|
Ну что ж. Будем считать, что для изображений, загружаемых методом loadClip, тоже существует ограничение на максимальный размер и примем его за 2880. Спасибо nOobCrafter.
|
| Часовой пояс GMT +4, время: 22:19. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.