【问题标题】:AS3/AIR: If phone use portrait, if tablet use landscape?AS3/AIR:如果手机使用纵向,平板使用横向?
【发布时间】:2013-02-27 02:36:28
【问题描述】:

好的,我已经为自己编写了一个简单的 DeviceCapabilites 类,以便能够检查设备是手机还是平板电脑等。

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

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

【问题讨论】:

    标签: actionscript-3 actionscript air landscape portrait


    【解决方案1】:

    这样的?

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

    【讨论】:

    • 这对他们没有帮助。 StageOrientation.DEFAULT 与设备的默认值相关。这对手机来说通常很好,因为几乎所有手机都默认是纵向的,有些平板电脑实际上是默认横向的(我相信华硕 Transformer Prime 就是其中之一)。
    • stage.deviceOrientation 可能有帮助吗?
    • 不,deviceOrientation(和orientation)似乎报告了完全相同的信息并依赖于相同的 StageOrientation 常量。您仍然需要我的答案中的额外逻辑来确定默认是横向还是纵向。
    • 嗨,你怎么知道它是平板电脑或手机。似乎我找不到一些类名 YourDeviceCapsClass。你有一些详细的陈述吗?
    【解决方案2】:

    恐怕您必须将 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 中,您还需要扩展它以避免旋转(因为从技术上讲,这是您想要的正确方向,只是颠倒了)

    【讨论】:

    • 谢谢,我回家后会尝试检查一下。
    【解决方案3】:

    我没有答案,但我想为其他人节省一些时间。在 ipad 上进行测试时,Josh 发布的上述代码将始终导致“defaultPositionIsLandscape”为 false :(

    【讨论】:

      猜你喜欢
      • 2011-12-01
      • 1970-01-01
      • 2014-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多