移动设备屏幕具有不同的屏幕密度或DPI(每英寸点数)。您可以将DPI值指定为160,240或320,具体取决于目标设备的屏幕密度。当您启用自动缩放功能时,Flex会优化其显示应用程序的方式以获得每个设备的屏幕密度。
例如,假设您将目标DPI值指定为160并启用自动缩放。当您在DPI值为320的设备上运行应用程序时,Flex会自动将应用程序缩放2倍。也就是说,Flex会将所有内容放大200%。
要指定目标DPI值,将其设置为在主应用程序文件的标签或标签的applicationDPI属性:
<s:ViewNavigatorApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
firstView="views.HomeView"
applicationDPI="160">
如果您选择不自动缩放应用程序,你必须处理根据需要手动调整布局的密度。
设备可以具有不同的屏幕尺寸或分辨率以及不同的DPI值或密度。分辨率是指像素宽度高的像素数量:即设备支持的像素总数。
DPI是每平方英寸的点数,即设备屏幕上像素的密度。术语DPI与PPI(像素每英寸)可互换使用。
applicationDPI(如果设置)指定应用程序的目标DPI。 Flex会自动应用比例因子以适应具有不同DPI值的其他设备。
Capabilities.screenDPI是当前设备的特定DPI值。
runtimeDPI与Capabilities.screenDPI类似。该值是当前设备的DPI,取整为由DPIClassification类(160,240和320 DPI)定义的常量之一。
如果你想知道一个组件,你需要与比例因子工作作为当前屏幕上的真实尺寸(宽度和高度):
var scaleFactor:Number = runtimeDPI/applicationDPI;
var currentComponentSize:int =componentSize.height * scaleFactor;
如果你还没有获得applicationDPI和runtimeDPI值,您可以使用功能手动计算scaleFactor。screenDPI为:
// Copy the applicationDPI setted in your application. ie:
var _applicationDPI:int = 160;
var _runtimeDPI:int;
if(Capabilities.screenDPI < 200)
_runtimeDPI = 160;
else if(Capabilities.screenDPI >=200 && Capabilities.screenDPI < 280)
_runtimeDPI = 240
else if (Capabilities.screenDPI >=280)
_runtimeDPI = 320;
var scaleFactor:Number = _runtimeDPI/_applicationDPI;
var currentComponentSize:int =componentSize.height * scaleFactor;
http://www.francescoflorio.info/?p=234
这可能是有益的分享,你已经设置了一个StageScaleMode的代码。它在MyGame的构造函数中吗?或者别的地方?你确定这段代码运行吗? – JeffryHouser
在MyGame中,我将它设置为Added_to_stage 在我调用super()后的构造函数中; addEventListener(Event.ADDED_TO_STAGE,handleAddedToStage); handleAddedToStage调用另一个函数,它调用了callstage.scaleMode = StageScaleMode.SHOW_ALL; – jbassking
这里有一些更多的信息。看起来我使用的背景图像会缩放,但其他图像不会。 我不知道是否有不同的阶段,也许他们不都是一样的 – jbassking