通过设备旋转更改AIR应用程序屏幕方向 - 不同设备是否以不同方式处理StageOrientation?

时间:2013-07-13 10:59:51

标签: actionscript-3 air rotation screen orientation

我想让我的AIR应用程序更改屏幕方向以及设备旋转。但是,我想强制它只在横向模式下 - 我从来没有想要ti处于纵向宽高比。

根据官方的Adobe文档,人们应该这样做:将描述符文件中的值更改为:

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

然后,在您的代码中,执行以下操作:

stage.addEventListener(StageOrientationEvent.ORIENTATION_CHANGING, orientationChanging);

private function orientationChanging(e:StageOrientationEvent) {
    if (e.afterOrientation == StageOrientation.DEFAULT || e.afterOrientation == StageOrientation.UPSIDE_DOWN) {
        e.preventDefault();
    }
}

我已经在我的平板电脑上测试了它并且它非常有效。 但是,有人告诉我,不同的设备会以不同的方式处理StageOrientation值。在某些情况下,StageOrientation.DEFAULT是肖像,而在其他情况下,它是风景。这将使上面的代码与我想要的完全相反。但我不知道这是不是真的。

任何人都可以确认吗?不同的设备会以不同的方式处理StageOrientation值吗?

2 个答案:

答案 0 :(得分:3)

要强制应用进入横向模式(同时允许其颠倒),只需使用:

stage.setAspectRatio(StageAspectRatio.LANDSCAPE);

请务必将AIR SDK至少更新为3.7(或3.8 beta)。我花了很多时间在这个问题上,没有任何成功 - 但只是更新SDK解决了它。

答案 1 :(得分:0)

您可以尝试这样做以确保格局:

stage.addEventListener(StageOrientationEvent.ORIENTATION_CHANGING, orientationChanging);

private function orientationChanging(e:StageOrientationEvent)
{
    //if already in landscape, ignore change
    if (stage.stageWidth>stage.stageHeight)
    {
        e.preventDefault();
    }
}