我想让我的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值吗?
答案 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();
}
}