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 回答