StageOrientationEvent未在DEFAULT方向上调度(纵向)

时间:2015-06-04 16:18:35

标签: actionscript-3 air flashdevelop

说明: 我有一个AIR Mobile AS3项目,我希望接收所有Orientation事件onChange,但实际上从未让设备旋转屏幕(我自己做必要的改动)。所以我设置autoOrients = true(需要获取任何Orientation事件)并尝试通过e.preventDefault(now deprecated on iOS)阻止设备轮换。

您可以下载问题为here的FlashDeveloper项目。 将其上传到Android设备,如果您在回到默认(纵向)时获得StageOrientationEvents,请告诉我。

其他三个方向很好,我从afterOrientation收到:

  • rotatedRight
  • rotatedLeft
  • 倒置

但是当旋转回初始位置(Protrait)时,StageOrientationEvent不会触发。

我的application.xml是这样的:

<visible>true</visible>
<fullScreen>false</fullScreen>
<autoOrients>true</autoOrients>
<aspectRatio>any</aspectRatio>
<resizable>true</resizable>

有趣的是,当我在横向移动设备上启动应用程序时,我会收到:

  • rotatedLeft
  • 倒置
  • 默认

再次,当旋转到初始位置(在本例中为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

0 个答案:

没有答案