DisplayObject私が呼んでDisplayObject::localToGlobalいるもののグローバル画面位置(ピクセル単位!)を取得するには、
var o: DisplayObject = ...;
var topLeft: Point = o.localToGlobal( new Point( 0, 0 ) );
topLeft.y整数値を期待していても、時々、の値が2倍になることに気づきました。考慮しなければならないスケーリングまたは座標系はありますか?
DisplayObject私が呼んでDisplayObject::localToGlobalいるもののグローバル画面位置(ピクセル単位!)を取得するには、
var o: DisplayObject = ...;
var topLeft: Point = o.localToGlobal( new Point( 0, 0 ) );
topLeft.y整数値を期待していても、時々、の値が2倍になることに気づきました。考慮しなければならないスケーリングまたは座標系はありますか?
これは、 の親に適用された変換が原因である可能性がありますDisplayObject。
DisplayObject以下を使用して、に影響するすべての変換を見つけることができます。
myDisplayObject.transform.concatenatedMatrix;
これは、表示リストのルートまでターゲットとその親に適用されたすべての変換の結果です。
x/y座標とwidth/heightは、Flashの浮動小数点値です。サブピクセル値(つまり、非整数値)を使用してオブジェクトのサイズを変更/配置することは完全に合法です。
スケーリングに関しては、オブジェクトscaleXとscaleYプロパティをクエリして、それらがスケーリングされているかどうかを確認するか、これらの値を強制的に1にすることができます。