随着设备旋转改变AIR应用程序屏幕方向-不同的设备对待StageOrientation是否不同



我想让我的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值的方式不同。在某些情况下,Stagerientation.DEFAULT是纵向的,而在其他情况下,它是横向的。这将使上面的代码与我想做的完全相反。但我不知道这是真是假。

有人能证实吗?不同的设备对待StageOrientation值是否不同?

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

stage.setAspectRatio(StageAspectRatio.LANDSCAPE);

请确保将AIRSDK至少更新到3.7(或3.8测试版)。我在这个问题上花了很多时间,但没有取得任何成功,但简单地更新SDK就解决了这个问题。

您可以尝试这样做来确保横向:

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

相关内容

  • 没有找到相关文章

最新更新