わかりました。デバイスが電話かタブレットかなどを確認できるように、簡単なDeviceCapabilitesクラスを作成しました。
ただし、ユーザーが電話を使用している場合はポートレートモードにする必要があり、タブレットを使用している場合はランドスケープモードのみを使用する必要があると言える必要があります...何かアイデアはありますか?
編集:明確にするために、携帯電話では向きを縦向きにロックしてから、タブレットでは横向きを使用したいと思います。
わかりました。デバイスが電話かタブレットかなどを確認できるように、簡単なDeviceCapabilitesクラスを作成しました。
ただし、ユーザーが電話を使用している場合はポートレートモードにする必要があり、タブレットを使用している場合はランドスケープモードのみを使用する必要があると言える必要があります...何かアイデアはありますか?
編集:明確にするために、携帯電話では向きを縦向きにロックしてから、タブレットでは横向きを使用したいと思います。
このようなもの?
stage.autoOrients = false;
if(YourDeviceCapsClass.isTablet)
stage.setOrientation(StageOrientation.ROTATED_LEFT);
else
stage.setOrientation(StageOrientation.DEFAULT);
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
できます(技術的には、それが正しい向きであるため、逆さまにするだけです)。
答えはありませんが、誰かの時間を節約したいと思います。iPadでテストする場合、Joshが投稿した上記のコードは常に「defaultPositionIsLandscape」がfalseになります:(