AIR mobile всегда в ландшафте - PullRequest
3 голосов
/ 11 января 2012

Я делаю приложение для мобильных устройств AIR, которое мне нужно постоянно использовать в ландшафтном режиме.На большинстве устройств это нормально, но на некоторых устройствах (например, Motorola XOOM) приложение запускается в альбомной ориентации.По крайней мере на встроенном эмуляторе, который поставляется с Flash Builder 4.5.Я не знаю, если это проблема с эмулятором или XOOM имеет ориентацию, отличную от большинства устройств.Во всяком случае, я хочу убедиться, что устройство всегда находится в ландшафтном режиме.Это можно легко проверить:

if(stage.stageWidth<stage.stageHeight){
 //rotate screen;
}

Что мне нужно вставить в оператор if, чтобы убедиться, что он правильно ориентирован?

Спасибо.

Ответы [ 3 ]

3 голосов
/ 11 января 2012

В файле * -app.xml вы можете указать, как должно работать приложение:

<aspectRatio>landscape</aspectRatio>
<autoOrients>true</autoOrients>
2 голосов
/ 19 июня 2012

Вам следует позаботиться о блокировке вращения в вашем приложении, если вы когда-нибудь отправите заявку в магазин Apple, вам может быть отказано, если приложение не будет приспосабливаться к устройству, перевернутому вверх дном. Многие устройства отличаются ориентацией «по умолчанию», но настройка дескриптора приложения с начальным соотношением сторон ландшафта должна работать. В AIR 3.3 есть изменение, так что настройка stage.aspectRatio сохранит ожидаемое соотношение сторон, независимо от ориентации устройства по умолчанию или перевернутого устройства.

Вам необходимо установить:

<aspectRatio>landscape</aspectRatio>
<autoOrients>true</autoOrients>

в дескрипторе вашего приложения. Вам также нужно установить

-swf-version=16

в настройках вашего компилятора. С этими настройками и AIR 3.3 приложение будет сохранять горизонтальное соотношение сторон независимо от того, повернуто ли устройство к «верху» устройства, слева или справа. Установка соотношения сторон к портрету заставит устройство сохранять пропорции портрета, даже если устройство перевернуто вверх ногами.

2 голосов
/ 04 апреля 2012

Даже если для aspectRatio установлено значение landscape и autoOrients установлено в false в application.xml, иногда ориентация устройства неправильно устанавливается во время первого кадра мобильного приложения Air 3.1, поэтому stage.stageWidth возвращает меньшее из двух измерений.Через несколько кадров он перевернется в правильную ориентацию.Это может быть то, что вы засвидетельствовали.

Так что, если вам нужно знать размеры сцены в альбомной ориентации при первой загрузке приложения, используйте:

var width :Number = Math.max(stage.stageWidth, stage.stageHeight);
var height :Number = Math.min(stage.stageWidth, stage.stageHeight);

Вам не нужно поворачивать все приложение вручную, но вот как:

this.rotationX = 90
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...