2013-03-19 48 views
1

我要试着用有限的英语来解释这一点,尽可能好!AS3/Adob​​e AIR从纵向开始并改变为横向将出现错误

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

这很好。我在FlashDevelop中使用了Adobe Flash CS6,所以我在应用程序启动后将肖像模式设置为默认模式。如果设备是平板电脑,则会通过stage.setAspectRatio(StageAspectRatio.LANDSCAPE)更改宽高比;

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

对不起,我不好解释,但让我告诉你一些数字...

这是当我在我的平板电脑开始我的应用程序是什么happends。

  1. 应用程序从肖像开始。 height = 1232 width = 800.正如你所看到的,显示分辨率应该是1280x720,但是没有办法通过任何命令来获得系统的高度。我测试了所有返回分辨率的数据,而且没有一个返回完整分辨率(1280x720)。

  2. 现在,应用程序变成景观(因为它是一个平板电脑),并得到该决议高度:800,宽度1232

正如你能想象这是错误的。因为系统在底部。该决议应高度:752,宽度1280


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

回答

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; 

那么这个人应该给予的屏幕分辨率米正确的值inus状态栏和导航栏区域:

//import flash.display.Screen 
var screenBounds:Rectangle = Screen.mainScreen.visibleBounds; 
相关问题