4

我正在开发的应用程序应仅以横向模式显示。

在我的应用程序描述符中,我有

    <aspectRatio>landscape</aspectRatio>
    <autoOrients>false</autoOrients> 

在 iOS 设备上,应用程序以横向模式启动,一切正常。

但是当我尝试在我的 android 设备(三星 Galaxy S3)上进行部署时,该应用程序以纵向模式启动。

当我修改描述符文件以读取时:

    <aspectRatio>landscape</aspectRatio>
    <autoOrients>true</autoOrients> 

那么应用程序将改变方向。

在调试时我发现启动时的应用程序方向是 stage.orientation == "default"

我还在我的 app.xml(应用程序描述符文件)中添加android:screenOrientation="landscape"了 android 特定配置:

<android>
    <manifestAdditions>
        <![CDATA[
        <manifest android:installLocation="auto">
            <uses-permission android:name="android.permission.INTERNET"/>
            <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
            <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
            <uses-permission android:name="android.permission.VIBRATE"/>
            <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
            <uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
            <uses-permission android:name="android.permission.WAKE_LOCK"/>
            <uses-permission android:name="android.permission.CAMERA"/>
            <uses-permission android:name="android.permission.RECORD_AUDIO"/>
            <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
            <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

            <uses-feature android:required="true" android:name="android.hardware.touchscreen.multitouch"/>
            <application android:enabled="true">
                <activity android:excludeFromRecents="false" android:screenOrientation="landscape">
                    <intent-filter>
                        <action android:name="android.intent.action.MAIN"/>
                        <category android:name="android.intent.category.LAUNCHER"/>
                    </intent-filter>
                </activity>
            </application>
        </manifest>
        ]]>
        </manifestAdditions>

     <!--Color depth for the app (either "32bit" or "16bit"). Optional. Default 16bit before namespace 3.0, 32bit after -->
    <!--<colorDepth></colorDepth>-->
</android>

这是一个已知的问题?这可能是什么原因?

编辑:

我最终stage.setAspectRatio( StageAspectRatio.LANDSCAPE );在我的主要课程中使用。它甚至适用于具有除 PORTRAIT 以外的默认方向的设备

4

1 回答 1

2

我在定位方面也有类似的问题。由于我只需要限制某些设备的方向更改,因此我通过在运行时设置值来解决它(在应用程序完全初始化之前)。

在主应用程序标签中,监听 preinitialize 事件:

<s:Application ...
    preinitialize="preinit()">

并在监听器中设置方向值:

private function preinit():void
{
    systemManager.stage.setOrientation(StageOrientation.ROTATED_LEFT);
    systemManager.stage.autoOrients = false;
}

或者尝试 StageOrientation.ROTATED_RIGHT。

编辑:正如 Josh 评论的那样,这仅适用于默认为纵向的设备(即:您的三星 S3)。

于 2013-09-30T14:29:21.873 回答