如何在加载启动画面时停止Ipad屏幕方向? - 在Flex Mobile Application中

时间:2013-08-20 15:45:51

标签: actionscript-3 flex air flex4.5 flex-mobile

我正在开发一个ipad应用程序,因为我将应用程序纵横比设置为横向,并在应用程序描述符xml中自动定向为true,如下所示

<!-- The initial aspect ratio of the app when launched (either "portrait" or "landscape"). Optional. Mobile only. Default is the natural orientation of the device -->

<aspectRatio>portrait</aspectRatio>
<autoOrients>false</autoOrients>

默认情况下,我的应用程序在横向视图中加载,但是当用户将ipad保存在“Landscape_Left”视图中时,即ipad-home-button面向用户的左侧,然后启动画面旋转为“Landscape_right”,它看起来是颠倒的。然后,用户必须将ipad旋转180度才能在直视中查看应用程序,每次打开应用程序时都会发生这种情况。我无法阻止应用程序旋转到DEFAULT横向视图,我尝试在初始化时将方向设置为ROTATED_LEFT,但是它旋转到DEFAULT然后再向左移动。

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
           xmlns:s="library://ns.adobe.com/flex/spark" applicationDPI="160"
           addedToStage="application1_addedToStageHandler(event)"
           preinitialize="application1_preinitializeHandler(event)"
           creationComplete="application1_creationCompleteHandler(event)"
           backgroundColor="#333A42"
           splashScreenImage="@Embed('assets/app_logo.png')"
           splashScreenMinimumDisplayTime="3000" >

<fx:Script>
    <![CDATA[
        import mx.events.FlexEvent;
        import mx.managers.ISystemManager;


        protected function application1_addedToStageHandler(event:Event):void
        {
            // TODO Auto-generated method stub
            trace("Orientation ::"+this.stage.orientation);
        }

        protected function application1_preinitializeHandler(event:FlexEvent):void
        {
            // TODO Auto-generated method stub
            trace("Aspect Ratio ::"+this.aspectRatio);
            var calAR:String = this.width > this.height ? StageAspectRatio.LANDSCAPE : StageAspectRatio.PORTRAIT;
            trace("Calculate Aspect Ratio ::"+calAR);
            var sm:ISystemManager = systemManager;

            if (sm && sm.stage && sm.isTopLevelRoot())
            {
                //                  sm.stage.addEventListener("orientationChanging", stage_orientationChangingHandler);
                //                  sm.stage.addEventListener("orientationChange", stage_orientationChange);
                trace("System manager Orientation ::"+sm.stage.orientation);
                trace("System manager Device Orientation ::"+sm.stage.deviceOrientation);
                sm.stage.setOrientation(StageOrientation.ROTATED_LEFT);
                sm.stage.setAspectRatio(StageAspectRatio.LANDSCAPE);
            }
        }

        protected function application1_creationCompleteHandler(event:FlexEvent):void
        {
            var sm:ISystemManager = systemManager;

            if (sm && sm.stage && sm.isTopLevelRoot())
            {
                trace("System manager Orientation ::"+sm.stage.orientation);
                trace("System manager Device Orientation ::"+sm.stage.deviceOrientation);
            }
        }

    ]]>
</fx:Script>

<fx:Declarations>
    <!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<s:BorderContainer  height="300" horizontalCenter="0" verticalCenter="0">
    <s:VGroup horizontalAlign="center">
        <s:TextInput id="txtAspectRatio"/>
        <s:Button label="Test" click="{txtAspectRatio.text = this.stage.orientation}"/>
    </s:VGroup>

</s:BorderContainer>
</s:Application>

这个问题有什么问题吗?它甚至在调用Application构造函数之前就会旋转。

1 个答案:

答案 0 :(得分:0)

当您删除splashScreenImage属性和Provide Launch Images for Different Orientations时,可能会这样:

Default-Landscape.png 
Default-Portrait.png 
Default-Landscape@2x.png
Default-Portrait@2x.png