![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Регистрация: Jun 2012
Сообщений: 16
|
Здравствуйте.
Пытаюсь использовать для масштабирования приложения, но вижу лишь увеличенную часть изображения. -- Процесс загрузки приложения происходит следующим образом: 1. Загружается preloader 2. Preloader загружает основной код 3. Который, в свою очередь, загружает ресурсы в виде изображений, дополнительных swf и отрисовывает главное окно приложения. Максимальный размер ресурса, который загружается на 3-м этапе - 1600х900, при масштабировании просто хотел положиться на stage.scaleMode = StageScaleMode.SHOW_ALL, однако, в процессе загрузки, вижу что и на весь экран отображается лишь часть изображения. Ниже представлены 2 изображения, не из приложения, просто чтобы дать представление о том, как это выглядит: 1. 2. В 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) Если установить тэг компилятора , то окно отрисовывается верного размера, но, при этом, не масштабируется, а ведет себя как при NO_SCALE. Понимаю, что можно использовать совместное решение установки тэга и установки + обрабатывать изменения размера самостоятельно, но хотелось бы добиться этого встроенными средствами. Возможно кто-то сталкивался с похожей ситуацией и знает решение проблемы. Заранее спасибо. |
|
|||||
|
Регистрация: Jul 2008
Сообщений: 912
|
Что вообще нужно? Чтоб объект был всегда по ширине флешки?
|
|
|||||
|
Регистрация: Jun 2012
Сообщений: 16
|
Да, нужно чтобы окно браузера вмещало ролик полностью и flash масштабировал его при изменении размера окна.
|
|
|||||
|
Лучше оставить NO_SCALE и модифицировать ваш DO по событию Event.RESIZE Stag'а. Мало ли какое разрешение будет у пользователя...
|
|
|||||
|
Регистрация: Jun 2012
Сообщений: 16
|
Хотелось обойтись малой кровью, благо стандартное масштабирование делает как раз то, что надо. И подошло бы даже для разных разрешений. Но, увы.
В случае если не заработает придется так и поступить, спасибо за совет. |
|
|||||
|
Регистрация: Jul 2008
Сообщений: 912
|
Конечно только событие RESIZE слушать, оно для этого и сделано.
|
|
|||||
|
Регистрация: Jun 2012
Сообщений: 16
|
Все верно, но масштабирование flash тоже должно работать из коробки, без дополнительных действий. Я пытался разобраться почему это не так.
|
|
|||||
|
.
|
Немного неверно. В режимах отличных от StageScaleMode.NO_SCALE это событие не диспатчится.
Добавлено через 7 минут Цитата:
А вот DisplayObject#width, который наследует Stage, соответствует вашему предположению. |
|
|||||
|
Потому что SHOW_ALL, будет стремиться показать весь изначальный размер stag'а.
Т.е. если браузер к примеру находится в оконном режиме и окно как-нибудь сжато, или у пользователя установлено разрешение которое вы не учли, то по краям вы увидети область, которая должна была бы находиться за пределами видимости, т.к. stage.stageWidth превышает stage.width. Так, например, будет выглядеть ваш ролик с SHOW_ALL на квадратном мониторе. Красные полосы это дельта stage.height от stage.stageHeight. Последний раз редактировалось FlashRus; 29.11.2012 в 20:58. |
|
|||||
|
Регистрация: Jun 2012
Сообщений: 16
|
Цитата:
В вашем примере верно показано, что размер stage - это один параметр, а размеры объектов, которые отрисованы на нем, могут быть больше, поэтому отобразится только часть. Долго экспериментировал с отрисовкой за границей stage, все сошлось ![]() Спасибо за разъяснение! Добавлено через 5 минут Поскольку StageScaleMode по умолчанию установлен в SHOW_ALL, а значит содержимое должно масштабироваться в пределах stage. А вот с тем, как определяются эти пределы, я ошибся. Добавлено через 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 файле (если он необходим). Спасибо всем за помощь! |
![]() |
![]() |
Часовой пояс GMT +4, время: 08:09. |
|
|
« Предыдущая тема | Следующая тема » |
| Теги |
| stage scaling , Stage.scaleMode , масштабирование , размер окна |
|
|