我在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的解决方案)。
答案 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
}
希望这会有所帮助