Экранные измерения ActionScript - PullRequest
0 голосов
/ 26 марта 2010

Я пытаюсь использовать класс 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);

Ответы [ 2 ]

1 голос
/ 26 марта 2010

Я не совсем уверен в этом, но мне кажется, что значение screenDPI, возвращаемое классом Capabilities, будет одинаковым для двух мониторов с одинаковым разрешением, даже если мониторы имеют разные физические размеры.

Чтобы проиллюстрировать, что если у вас есть два монитора, один из которых равен 14 ", а другой - 28", оба имеют одинаковое разрешение 800 x 600 пикселей, то свойство screenDPI будет возвращать одно и то же, поскольку оба они используют такое же разрешение.

Однако количество точек в буквальном, реальном дюйме на каждом экране будет различным из-за физических размеров монитора. Поэтому, когда вы запускаете свой код и измеряете экранный Sprite, который вы создаете с помощью линейки, он не будет соответствовать реальным дюймам. Я не уверен, как вы могли обойти эту проблему (если я прав в том, что ее вызывает), кажется, что это будет трудно.

Debu

0 голосов
/ 31 марта 2010

Я предлагаю в начале вашего приложения сказать пользователю «Я обнаружил, что ваш монитор равен XX дюймам» (где XX рассчитывается по screenDPI), и разрешить пользователю вводить правильный размер монитора.

...