AS3 / AIR:如果手机使用肖像,平板电脑是否使用横向?

时间:2013-03-11 19:15:28

标签: actionscript-3 actionscript air landscape portrait

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

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

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

3 个答案:

答案 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:(