XY座標の最小単位 [Edit]

たとえば、メインタイムライン(_root)に、MovieClipインスタンスmy_mcを配置します。そして、[プロパティ]インスペクタで、X座標に12.3456789(ピクセル)という値を入力すると、どうなるでしょう?(図001)

図001■[プロパティ]インスペクタでX座標に小数値を設定
FF060426_001.gif

小数点第2位以降が切捨てられて、12.3が設定されます。また、45.6789を入力すると、同様に45.6になります。

インスタンスの位置座標は、画面のピクセルが基本です。小数点以下のあまりに小さい値は、画面表示のうえで区別することができません。したがって、Flashが、扱い可能な範囲に数値を丸めるのです。

実際には、Flashは位置座標として、小数第1位よりもう少し小さな値が扱えます。これは、座標をスクリプトで設定すると、確認できます。

スクリプト001■X座標に小数値を設定
my_mc._x = 12.3456789;
trace(my_mc._x); // 出力: 12.3
my_mc._x = 45.6789;
trace(my_mc._x); // 出力: 45.65

XY座標の最小単位は1/20ピクセルで、これをtwip(TWentIeth of a Point)と呼びます[*1]。つまり、XY座標は、0.05ピクセル刻みの値になります[*2]。
_____
[*1] twipについてFlash 8ヘルプには、プリントに関連して記載があるのみです([Flashユーザーガイド] > [SWFファイルからのプリント] > [プリントジョブの開始] > [targetの指定] > [プリント範囲の指定])。

Flash の画面上のコンテンツとプリントページ上のコンテンツとの対応を理解するためには、画面用の測定単位とプリント用の測定単位について理解する必要があります。ピクセルは画面用の測定単位、ポイントはプリント用の測定単位です。ピクセルもポイントも 1 インチの 1/72 に相当します。1 twip は 1 ポイントと 1 ピクセルの 1/20 です。

次に、それぞれ測定単位間の対応を示します。

1 ピクセル = 20 twip
1 ポイント = 20 twip
72 ピクセル = 1 インチ
72 ポイント = 1 インチ
567 twip = 1 cm
1440 twip = 1 インチ

なお、「Macromedia Flash (SWF) and Flash Video (FLV) File Format Specification (Version 8)」p.33には、もう少し詳しい説明があります。

Coordinates and Twips
The SWF file format stores all x-y coordinates as integers, usually in a unit of measurement called a twip. In the SWF format, a twip is 1/20th of a logical pixel. A logical pixel is the same as a screen pixel when the file is played at 100%—that is, without scaling.

For example, a rectangle 800 twips wide by 400 twips high is rendered as 40 by 20 logical pixels. Fractional pixel sizes are approximated with anti-aliasing. A rectangle 790 by 390 twips (39.5 by 19.5 pixels) appears to have slightly blurred edges.

Twips are a good compromise between size and precision. They provide sub-pixel accuracy for zooming and precise placement of objects, while consuming very few bits per coordinate.

[*2] マウスポインタのXY座標(MovieClip._xmouse/MovieClip._ymouse)は、整数値で処理されます。

コメント

この記事にコメントを書く

記事に対するテクニカルな質問はご遠慮ください(利用規約)。

その他の記事