在AS3 Mobile应用程序中设置ApplicationDPI

时间:2012-05-17 22:23:52

标签: actionscript-3 mobile dpi

我在Flash Builder中使用AS3开发应用程序(没有灵活的东西)。在flex中,可以通过以下代码设置应用程序的dpi:

<s:ViewNavigatorApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
   xmlns:s="library://ns.adobe.com/flex/spark" applicationDPI="320">

但我只使用AS3。我已经读过在运行时(使用AS3)无法更改应用程序的DPI,但是如何在项目设置,编译器设置中设置它,还是有其他方法可以实现?

此外,默认应用程序的DPI设置是什么?

在这里提问,因为无法在网上找到它(只有基于flex的解决方案)。

1 个答案:

答案 0 :(得分:3)

移动设备上的DPI由硬件设置,完全取决于手机和屏幕。当您在Flex移动设备中设置applicationDPI时,您告诉Flex自动扩展您的资产。

  

自动缩放。开发人员可以通过在应用程序上设置applicationDPI属性来选择为其应用程序指定目标DPI。当明确设置时,开发人员应设置其外观和布局,就好像它们在给定DPI的设备上运行一样。在运行时,如果设备具有与指定目标DPI不同的DPI,Flex将自动缩放整个应用程序以保留应用程序及其控件的近似物理大小。例如,如果应用程序的目标是160 DPI,它将在240 DPI设备上自动缩放1.5倍。如果您选择不使用此功能,则需要确保自定义外观和视图布局在运行时适应不同的像素密度。   Source

在AS3移动项目中,您需要自己处理。

您可以使用Capabilities.screenDPI获取当前的DPI,但我认为您可能会追求的是按比例缩放资产的比率。一种方法是从原始游戏宽度开始。

 private static const WIDTH:Number = 1024;

然后您可以使用

获得比率
 var ratio:Number = stage.fullScreenWidth / WIDTH;

并将其应用于您的资产

myBitmap.scaleX = myBitmap.scaleY = ratio;

现在这不会考虑设备的旋转,因此可能会翻转fullScreenWidth / Height。要检查你是否需要做这样的事情

if (stage.fullScreenWidth > stage.fullScreenHeight){
  //portrait 
} else {
  //landscape
}

希望这会有所帮助