Получить исходную ширину сцены и высоту после масштаба - PullRequest
0 голосов
/ 11 июля 2011

Кто-нибудь знает, как я могу получить "ОРИГИНАЛЬНУЮ" высоту и ширину сцены, которые были заданы при компиляции приложения Air / Flash

Я установил приложение для компиляции в 1920x1080;

У меня есть stage.scaleMode = StageScaleMode.SHOW_ALL;

и stage.nativeWindow.maximize ();

Но когда я отслеживаю stage.stageWidth, я получаю 1280, которое является разрешением экрана.

Я надеялся получить 1920 год.

Я не могу использовать stage.width или stage.getBounds (stage), потому что это возвращает 6000. Из-за маскировки элементов за пределами экрана.

Поскольку stage.stageWidth - это разрешение экрана, я надеялся, что смогу использовать его и математически обработать оригинал с помощью stage.scaleX. но даже если SHOW_ALL масштабирует все приложение, stage.scaleX возвращает 1.

Я хотел бы жестко закодировать 1920x1080 в приложение, но этот код используется во многих приложениях различных измерений. И теперь я зашел в тупик.

Любая помощь будет приветствоваться.

РЕДАКТИРОВАТЬ: Я знаю, что делает "Показать все", вам не нужно рассказывать мне об этом.

Я также знаю, что делают stage.width и stage.stageWidth, но stage.stageWidth возвращает то, что я считаю неверным в этом примере, и ему нужна альтернатива.

Изменение размера тоже не помогает, так как мне это нужно после факта.

Ответы [ 2 ]

7 голосов
/ 11 июля 2011

при настройке:

stage.scaleMode = StageScaleMode.SHOW_ALL;

Event.RESIZE не отправляется с stage, поскольку не происходит ИЗМЕНЕНИЕ этапа.

stage.width -это параметр, который дает вам размер всех экранных объектов, размещенных на нем (представьте, что все, что находится на сцене, как один MC).

stage.stageWidth - этот параметр вернет вам ширину по умолчаниютолько (потому что REIZE не происходит, поскольку у вас есть scaleMode=SHOWALL, обычно он возвращает видимый размер рабочей области флэш-памяти.

Если вы хотите получить размер экрана (разрешение устройства):

*Параметр 1016 *

SHOW_ALL для scaleMode указывает, что приложение должно растягиваться до размера флеш-дисплея.

Если вы хотите изменить что-то для разных размеров экрана / стадии флеш-дисплея, вам необходимоиспользуйте NO_SCALE свойство.

пс для параметра ширины. Применяются те же правила.

ОБНОВЛЕНИЕ

После некоторого тестирования найдено решение для этого:

stage.scaleMode = StageScaleMode.NO_SCALE; // reseting the scale to get actual width
ACTUAL_STAGE_WIDTH = stage.stageWidth; // this is where you getting the width you need
stage.scaleMode = StageScaleMode.SHOW_ALL; // setting back the scale.
3 голосов
/ 05 февраля 2012

@ Евгений Дмитриев решение было немного взломать. (Без обид)

Реальный ответ для получения опубликованного размера SWF использует

this.loaderInfo.width;
this.loaderInfo.height;

Нашел это на старом форуме ActionScript, и это было то, что я сам забыл.

Вы можете посмотреть информацию о загрузчике на ASdoc, и они дадут вам подробное объяснение.

...