好的,我自己写了一个简单的DeviceCapabilites类,可以检查设备是手机还是平板电脑等。
但是我需要能够说,如果用户在手机上,它应该处于纵向模式,如果在平板电脑上,我只想使用横向模式......任何想法?
编辑:为了说清楚,我想在电话上将方向锁定为纵向模式,然后在平板电脑上使用横向。
答案 0 :(得分:3)
这样的东西?
stage.autoOrients = false;
if(YourDeviceCapsClass.isTablet)
stage.setOrientation(StageOrientation.ROTATED_LEFT);
else
stage.setOrientation(StageOrientation.DEFAULT);
答案 1 :(得分:1)
我担心,你必须将BarışUşaklı提到的setOrientation()
方法与更多逻辑结合起来。正如我在评论中提到的那样,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类中将top部分设置为静态的只读getter,以便于访问。您还需要展开它以避免旋转,如果它在StageOrientation.UPSIDE_DOWN
中(因为从技术上讲,这是您想要的正确方向,只是颠倒)
答案 2 :(得分:0)
我没有答案,但我想在某个时候拯救别人。在ipad上测试时,Josh发布的上述代码将始终导致“defaultPositionIsLandscape”为false:(