【问题标题】:AS3/Adobe AIR Starting in Portrait & changing to Landscape becomes wrongAS3/Adobe AIR 从纵向开始并改为横向变得错误
【发布时间】:2013-03-19 17:53:51
【问题描述】:

我会尽量用有限的英语解释这一点!

好的,我正在构建一个应用程序,该应用程序将在手机上处于纵向模式,而在平板电脑上处于横向模式。 我这样做的方法是,首先计算显示大小而不是基本上说"if display size is more than 5 inches, consider this device to be a tablet".

这很好用。我将 Adob​​e Flash CS6 与 FlashDevelop 一起使用,因此一旦应用程序启动,我就会将纵向模式设为默认模式。如果设备是平板电脑,它会通过 stage.setAspectRatio(StageAspectRatio.LANDSCAPE);

改变纵横比

这也很好用。 现在,问题是 stage.stageWidth 不会将其值更改为新的 aspectRatio。这是一个简单的修复,只需使用 stage.stageHeight 作为宽度。但是蜂窝/ics平板/设备上的系统栏不会改变。

抱歉解释不好,但让我给你看一些数字......

这就是我在平板电脑上启动应用程序时发生的情况。

  1. 应用程序以纵向启动。高度 = 1232 宽度 = 800。如您所见,显示分辨率应为 1280x720,但无法通过任何命令获取系统栏的高度。我已经测试了所有返回分辨率的东西,但都没有返回完整的分辨率 (1280x720)。

  2. 现在应用程序变成横向(因为它是平板电脑)并获得此分辨率高度:800,宽度 1232。

您可以想象这是错误的。因为系统栏在底部。分辨率应该是高:752,宽1280。


有什么解决办法吗? 我一直在考虑一种解决方法,它基本上可以计算系统栏 *应该 是什么。但在我开始之前,我想知道是否有任何方法可以解决这个问题。*

【问题讨论】:

    标签: actionscript-3 air adobe resolution


    【解决方案1】:

    -1。不知道有没有官方的办法 但您的第一个标准听起来与此类似:

    link: AS3/AIR: If phone use portrait, if tablet use landscape?

    这也解决了某些设备默认方向是“纵向”而某些设备是“横向”的问题

    -2。至于屏幕的面积

    以下应给出设备的像素尺寸:

    stage.align = StageAlign.TOP_LEFT;
    stage.scaleMode = StageScaleMode.NO_SCALE;    
    stage.fullScreenWidth;
    stage.fullScreenHeight;
    
    //import flash.system.Capabilities;
    Capabilities.screenResolutionX;
    Capabilities.screenResolutionY;
    

    然后使用这个(我假设你一直在使用)应该返回可用区域减去状态栏(我读过的一篇文章提到它适用于 iPad,但某些 Android 平板电脑没有考虑导航栏):

    stage.stageWidth;
    stage.stageHeight;
    

    那么这个应该给出正确的屏幕分辨率减去状态栏和导航栏区域的值:

    //import flash.display.Screen
    var screenBounds:Rectangle = Screen.mainScreen.visibleBounds;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-27
      • 1970-01-01
      • 2015-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-13
      相关资源
      最近更新 更多