|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Jun 2012
Сообщений: 16
|
stage.stageWidth меньше stage.width при stage.scaleMode = StageScaleMode.SHOW_ALL
Здравствуйте.
Пытаюсь использовать для масштабирования приложения, но вижу лишь увеличенную часть изображения. -- Процесс загрузки приложения происходит следующим образом: 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 масштабировал его при изменении размера окна.
|
|
|||||
Регистрация: Jun 2012
Сообщений: 16
|
Хотелось обойтись малой кровью, благо стандартное масштабирование делает как раз то, что надо. И подошло бы даже для разных разрешений. Но, увы.
В случае если не заработает придется так и поступить, спасибо за совет. |
|
|||||
Регистрация: Jul 2008
Сообщений: 912
|
Конечно только событие RESIZE слушать, оно для этого и сделано.
|
|
|||||
Регистрация: Jun 2012
Сообщений: 16
|
Все верно, но масштабирование flash тоже должно работать из коробки, без дополнительных действий. Я пытался разобраться почему это не так.
|
|
|||||
Потому что SHOW_ALL, будет стремиться показать весь изначальный размер stag'а.
Т.е. если браузер к примеру находится в оконном режиме и окно как-нибудь сжато, или у пользователя установлено разрешение которое вы не учли, то по краям вы увидети область, которая должна была бы находиться за пределами видимости, т.к. stage.stageWidth превышает stage.width. Так, например, будет выглядеть ваш ролик с SHOW_ALL на квадратном мониторе. Красные полосы это дельта stage.height от stage.stageHeight.
__________________
ЛОДКИ Последний раз редактировалось FlashRus; 29.11.2012 в 20:58. |
|
|||||
Регистрация: Sep 2007
Сообщений: 43
|
У меня было несколько похожая задача. Есть флешка с фиксированной шириной, высоту влешки меняет javascript.
HTML, JS var fo = new FlashObject("myflash.swf", "myFlash", "919", "2000", "10"); <div style="width:919px; height:754px;" id="flashcontent_widget"> </div> function resizeFlash(h) { $("#myFlash").attr("height", h); } AS3 Document class stage.scaleMode = flash.display.StageScaleMode.NO_SCALE; stage.align = flash.display.StageAlign.TOP_LEFT; stageResize(); stage.addEventListener(Event.RESIZE, stageResize, false, 0, true); private function stageResize(event:Event = null):void { this.scaleX = this.scaleY = stage.stageWidth / 919; } Другая серьезная проблема с которой я столкнулся быля связана с тем что при изменении размера swf из JS наблюдалось кратковременное (примерно 0.2 секунды) изменение aspect ratio флешки. Это было заметно и неприемлемо. Протестировал все 4 варианта StageScaleMode: SHOW_ALL, NO_SCALE, NO_BORDER, EXACT_FIT. Нормально работает только NO_SCALE. |
Часовой пояс GMT +4, время: 01:42. |
|
« Предыдущая тема | Следующая тема » |
Теги |
stage scaling , Stage.scaleMode , масштабирование , размер окна |
|
|