1

わかりました。デバイスが電話かタブレットかなどを確認できるように、簡単なDeviceCapabilitesクラスを作成しました。

ただし、ユーザーが電話を使用している場合はポートレートモードにする必要があり、タブレットを使用している場合はランドスケープモードのみを使用する必要があると言える必要があります...何かアイデアはありますか?

編集:明確にするために、携帯電話では向きを縦向きにロックしてから、タブレットでは横向きを使用したいと思います。

4

3 に答える 3

3

このようなもの?

stage.autoOrients = false;

if(YourDeviceCapsClass.isTablet)
    stage.setOrientation(StageOrientation.ROTATED_LEFT);
else
    stage.setOrientation(StageOrientation.DEFAULT);
于 2013-03-11T19:49:34.957 に答える
1

setOrientation()Barış Uşaklı によるメソッドの言及を、もう少しロジックと組み合わせる必要があります。彼へのコメントで述べたように、StageOrientation.DEFAULTはデバイスのデフォルトの向きを指しますが、それが横向きか縦向きかはわかりません。

幸いなことに、それを理解する簡単な方法があります。デバイスがデフォルト/逆さまの向きになっているかどうかを確認し、幅/高さに対して確認するだけです。

var defaultPositionIsLandscape:Boolean = false;
if ( stage.orientation == StageOrientation.DEFAULT || stage.orientation == StageOrientation.UPSIDE_DOWN ) {
    defaultPositionIsLandscape = stage.stageWidth > stage.stageHeight;
}
else {
    defaultPositionIsLandscape = stage.stageWidth < stage.stageHeight;
}

if ( isTablet ) {
    if ( defaultPositionIsLandscape ) {
        stage.setOrientation( StageOrientation.DEFAULT );
    }
    else {
        stage.setOrientation( StageOrientation.ROTATED_LEFT );
    }
}

ロジックは少しごちゃごちゃしているので、おそらく少しきれいにすることができますが、それは何が起こるべきかの一般的な要点です. 個人的には、アクセスしやすいように、DeviceCapabilities クラスの上部を読み取り専用の静的な getter にします。また、回転しないように展開することもStageOrientation.UPSIDE_DOWNできます(技術的には、それが正しい向きであるため、逆さまにするだけです)。

于 2013-03-11T22:04:40.043 に答える
0

答えはありませんが、誰かの時間を節約したいと思います。iPadでテストする場合、Joshが投稿した上記のコードは常に「defaultPositionIsLandscape」がfalseになります:(

于 2013-07-31T19:24:02.567 に答える