![]() |
stage.stageWidth меньше stage.width при stage.scaleMode = StageScaleMode.SHOW_ALL
Вложений: 2
Здравствуйте.
Пытаюсь использовать Код AS3:
-- Процесс загрузки приложения происходит следующим образом: 1. Загружается preloader 2. Preloader загружает основной код 3. Который, в свою очередь, загружает ресурсы в виде изображений, дополнительных swf и отрисовывает главное окно приложения. Максимальный размер ресурса, который загружается на 3-м этапе - 1600х900, при масштабировании просто хотел положиться на stage.scaleMode = StageScaleMode.SHOW_ALL, однако, в процессе загрузки, вижу что Код AS3:
Ниже представлены 2 изображения, не из приложения, просто чтобы дать представление о том, как это выглядит: 1. Вложение 28745 2. Вложение 28747 В html и js файлах, используемых для загрузки, width = height = 100%. Пробовал загрузку в разных браузерах, результат одинаков. Судя по всему размер 500x375 является размером по умолчанию, которую использует mxmlc (http://livedocs.adobe.com/flex/3/htm...pilers_13.html, опция default-size) Если я правильно понимаю значения stage.stageWidth и stage.stageHeight, то они должны соответствовать максимальному размеру дочерних объектов. Такое поведение можно наглядно наблюдать в примере http://theactionscripter.com/2009/05...tagewidth.aspx (можно открыть его в отдельном окне, тогда будет видно что stageWidth совпадает с размером экрана http://theactionscripter.com/files/3...stagewidth.swf) Если установить тэг компилятора Код AS3:
Понимаю, что можно использовать совместное решение установки тэга и установки Код AS3:
Возможно кто-то сталкивался с похожей ситуацией и знает решение проблемы. Заранее спасибо. |
Что вообще нужно? Чтоб объект был всегда по ширине флешки?
|
Да, нужно чтобы окно браузера вмещало ролик полностью и flash масштабировал его при изменении размера окна.
|
Лучше оставить NO_SCALE и модифицировать ваш DO по событию Event.RESIZE Stag'а. Мало ли какое разрешение будет у пользователя...
|
Хотелось обойтись малой кровью, благо стандартное масштабирование делает как раз то, что надо. И подошло бы даже для разных разрешений. Но, увы.
В случае если не заработает придется так и поступить, спасибо за совет. |
Цитата:
|
Цитата:
|
Вложений: 1
Потому что SHOW_ALL, будет стремиться показать весь изначальный размер stag'а.
Т.е. если браузер к примеру находится в оконном режиме и окно как-нибудь сжато, или у пользователя установлено разрешение которое вы не учли, то по краям вы увидети область, которая должна была бы находиться за пределами видимости, т.к. stage.stageWidth превышает stage.width. Так, например, будет выглядеть ваш ролик с SHOW_ALL на квадратном мониторе. Красные полосы это дельта stage.height от stage.stageHeight. |
Цитата:
|
У меня было несколько похожая задача. Есть флешка с фиксированной шириной, высоту влешки меняет javascript.
HTML, JS Код AS3:
AS3 Document class Код AS3:
Другая серьезная проблема с которой я столкнулся быля связана с тем что при изменении размера swf из JS наблюдалось кратковременное (примерно 0.2 секунды) изменение aspect ratio флешки. Это было заметно и неприемлемо. Протестировал все 4 варианта StageScaleMode: SHOW_ALL, NO_SCALE, NO_BORDER, EXACT_FIT. Нормально работает только NO_SCALE. |
Цитата:
Добавлено через 7 минут Цитата:
А вот DisplayObject#width, который наследует Stage, соответствует вашему предположению. |
Цитата:
SHOW_ALL означает, что прямоугольник дефолтного размера стейджа всегда будет полностью виден. Что там творится за границей "рабочего стола", никого не волнует. Мультипликаторы обычно держат там всякое зверье, входящее в кадр и выходящее из него, а у игроделов там покусанные края карты. И ни те, ни другие не хотят, чтобы юзер любовался бардаком за сценой. Добавлено через 3 минуты Сорри. "Творческим беспорядком"))) |
Цитата:
В вашем примере верно показано, что размер stage - это один параметр, а размеры объектов, которые отрисованы на нем, могут быть больше, поэтому отобразится только часть. Долго экспериментировал с отрисовкой за границей stage, все сошлось :) Спасибо за разъяснение! Добавлено через 5 минут Цитата:
Добавлено через 11 минут Цитата:
Если бы stage включал в себя все объекты, от него было бы не спрятаться ;) Спасибо! Добавлено через 27 минут Цитата:
Добавлено через 46 минут Цитата:
Как показали выше, размер stage не привязан к размеру отображаемых объектов. Что меня удивило, так это то, что без использования тэга [SWF(width='x', height='y')] масштабирование происходит нормально, но в пределах stage (размер которого равен 500х375 в этом случае - судя по всему значение по умолчанию для mxmlc), а при использовании тэга масштабирование не происходило вообще. Для разработки использовался Flash Builder, который генерирует html файл для вызова swf и оказалось, что html файл содержит указание размеров в px, которые берутся из тэга SWF, если он есть и 100% по ширине и высоте, если его нет. Загрузив SWF напрямую все заработало. Насколько понимаю правильным решением будет указание необходимого разрешения в тэге SWF + использование 100% в html файле (если он необходим). Спасибо всем за помощь! |
Цитата:
http://help.adobe.com/ru_RU/FlashPla...ject.html#mask |
Цитата:
|
Цитата:
Код AS1/AS2:
|
Цитата:
|
| Часовой пояс GMT +4, время: 14:40. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.