说明: 我有一个AIR Mobile AS3项目,我希望接收所有Orientation事件onChange,但实际上从未让设备旋转屏幕(我自己做必要的改动)。所以我设置autoOrients = true(需要获取任何Orientation事件)并尝试通过e.preventDefault(now deprecated on iOS)阻止设备轮换。
您可以下载问题为here的FlashDeveloper项目。 将其上传到Android设备,如果您在回到默认(纵向)时获得StageOrientationEvents,请告诉我。
其他三个方向很好,我从afterOrientation收到:
但是当旋转回初始位置(Protrait)时,StageOrientationEvent不会触发。
我的application.xml是这样的:
<visible>true</visible>
<fullScreen>false</fullScreen>
<autoOrients>true</autoOrients>
<aspectRatio>any</aspectRatio>
<resizable>true</resizable>
有趣的是,当我在横向移动设备上启动应用程序时,我会收到:
再次,当旋转到初始位置(在本例中为rotateRight)时,StageOrientationEvent不会触发。初始位置不提供StageOrientationEvent。
这是我的倾听者:
private function onOrientationChanging(e:StageOrientationEvent):void {
e.preventDefault();
ui.console.field.text += "\nORIENTATION_CHANGING "+e.afterOrientation;
var rot:Number = 0;
switch (e.afterOrientation){
case "rotatedRight":
rot = 90;
break;
case "rotatedLeft":
rot = -90;;
break;
case "upsideDown":
rot = 180;;
break;
default:
rot = 0;
break;
}
TweenMax.to(ui.console.orient, 3, { shortRotation:{rotationZ:rot}, ease:Elastic.easeOut } );
}
我甚至尝试删除e.preventDefault(),希望这不仅能够禁用应用程序的自动旋转,而且还能以某种方式防止触发默认旋转。但事实并非如此。
有什么想法吗?
规格:
FlashDevelop 5.0
SDK Air17.0 + FLex 4.6.0
Android Nexus 5 Android 5.1.1