0

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);
4

2 に答える 2

1

これについては完全にはわかりませんが、Capabilitiesクラスによって返されるscreenDPI値は、モニターの物理的な寸法が異なっていても、同じ解像度を実行している2つのモニターで同じ値になると思います。

たとえば、14インチと28インチの2つのモニターがあり、どちらも800 x 600ピクセルの同じ解像度を表示している場合、両方が同じ解像度を使用しているため、そのscreenDPIプロパティは同じものを返します。 。

ただし、モニターの物理的な寸法により、各画面の文字通りの実際のインチのドット数は異なります。したがって、コードを実行し、定規を使用して作成した画面上のスプライトを測定する場合、実際のインチに一致することはありません。この問題をどのように回避できるかわかりません(原因が正しければ)、難しいようです。

デブ

于 2010-03-26T19:57:31.630 に答える
0

アプリの開始時に、「モニターがXXインチであることを検出しました」(XXはscreenDPIから計算されます)とユーザーに伝え、ユーザーが正しいモニターサイズを入力できるようにすることをお勧めします。

于 2010-03-31T00:45:36.117 に答える