我想让我的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();
}
}