我正在尝试使用Capabilities类在屏幕上以精确的(2.5“x 5”)绘制精确大小的精灵,无论屏幕的分辨率如何,但我相信代码是正确的,精灵的大小是不准确 - 用尺子实际测量时。
function inchesToPixels(inches:Number):uint
{
return Math.round(Capabilities.screenDPI * inches);
}
var mySprite:Sprite = new Sprite();
mySprite.graphics.beginFill(0x000000, 0.5);
mySprite.graphics.drawRect(0, 0, inchesToPixels(2.5), inchesToPixels(5));
mySprite.graphics.endFill();
addChild(mySprite);
答案 0 :(得分:1)
我对此并不完全确定,但我的感觉是,即使监视器具有不同的物理尺寸,Capabilities类返回的screenDPI值对于运行相同分辨率的两个监视器也是相同的值。
为了说明,如果你有两个显示器,一个是14“而另一个是28”,两者都显示相同的800 x 600像素分辨率,那个screenDPI属性将返回相同的东西,因为它们都使用相同的决议。
但是,由于显示器的物理尺寸,每个屏幕上的字面实际英寸中的点数会有所不同。因此,当您运行代码并测量使用标尺创建的屏幕上的Sprite时,它不会与实际英寸相匹配。我不确定你是如何解决这个问题的(如果我对它的原因是对的),看起来很难。
得不
答案 1 :(得分:0)
我建议您在应用开始时告诉用户“我检测到您的显示器是XX英寸”(其中XX是根据screenDPI计算的),并允许用户输入正确的显示器尺寸。