ステージ上に長方形がある場合、ステージに対して左上端(x、y)と右下端(x、y)を見つけるにはどうすればよいですか?私がグーグルでこれを見つけることができないのは奇妙です!
localToGlobal(point)
of DisplayObject
ポイントオブジェクトを表示オブジェクトの(ローカル)座標からステージ(グローバル)座標に変換します。
// assuming (0, 0) is top left
var topLeftStage:Point = myDisplayObject.localToGlobal(new Point(0, 0));
// bottom right
var bottomRightStage:Point = myDisplayObject.localToGlobal(new Point(width, height));
これは1行で実行できます。例:追加したコンテナがDisplayObjectでもある場合は、次のように記述できます。
var rect:Rectangle = yourDisplayObject.getBounds(stage);
これは、ステージに対して長方形を取得するために直接ジャンプします。次に、具体的に言及した値にアクセスできます。
rect.bottomRight
rect.topLeft
オブジェクトがoneコンテナ内にある場合は、オブジェクトの位置からコンテナの位置を差し引くだけです。
_var rawx:Number = x - parent.x;
var rawy:Number = y - parent.y;
_
それ以外の場合は、上記のようにlocalToGlobal()
を使用します。
オブジェクトの左上と右下のポイントを見つけるのは簡単ですが、シンボルの登録ポイントがどこにあるかを知る必要があります。
シンボルの中央にある登録ポイントの場合:
_var left:Number = x - (width / 2);
var right:Number = x + (width / 2);
var top:Number = y - (height / 2);
var bottom:Number = y + (height / 2);
_
左上にあった場合:
_var left:Number = x;
var right:Number = x + width;
var top:Number = y;
var bottom:Number = y + height;
_
等。
displayobjectがムービークリップの0,0から始まらない場合は、次のものが必要になります。
var skin:DisplayObject = ... //the MC you need to get positions of
var point : Point = skin.localToGlobal(new Point(skin.getBounds(skin).x,skin.getBounds(skin).y));
var point2 : Point = skin.localToGlobal(new Point(skin.getBounds(skin).x+skin.getBounds(skin).width,skin.getBounds(skin).y+skin.getBounds(skin).height));
結果は次のようになります。
x=point.x;
y=point.y;
width=point2.x-point.x;
heigth=point2.y-point.y;