AS3 / AIR:如果手机使用人像,如果平板使用风景?

好的,我写了一个简单的DeviceCapabilites类,可以检查设备是手机还是平板电脑等。

但我需要能够说,如果用户在手机上,它应该是肖像模式,如果在平板上,我只想使用横向模式...任何想法?

编辑:为了说清楚,我想在手机上将方向锁定到肖像模式,然后在平板电脑上使用横向。


像这样?

stage.autoOrients = false;

if(YourDeviceCapsClass.isTablet)
    stage.setOrientation(StageOrientation.ROTATED_LEFT);
else
    stage.setOrientation(StageOrientation.DEFAULT);

您恐怕必须将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类中的静态只读getter,以便于访问。 如果它处于StageOrientation.UPSIDE_DOWN您还需要将其展开以避免旋转(因为从技术角度而言,这是您想要的正确方向,只是上下颠倒)


我没有一个答案,但我想保存别人一些时间。 在ipad上测试时,Josh发布的上述代码将始终导致“defaultPositionIsLandscape”为false :(

链接地址: http://www.djcxy.com/p/37953.html

上一篇: AS3/AIR: If phone use portrait, if tablet use landscape?

下一篇: Portrait for phone, landscape for Tablet (Android