web-dev-qa-db-ja.com

AS3-ステージに対するオブジェクトの位置を見つける方法は?

ステージ上に長方形がある場合、ステージに対して左上端(x、y)と右下端(x、y)を見つけるにはどうすればよいですか?私がグーグルでこれを見つけることができないのは奇妙です!

14
muudles

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));
19
taskinoor

これは1行で実行できます。例:追加したコンテナがDisplayObjectでもある場合は、次のように記述できます。

var rect:Rectangle = yourDisplayObject.getBounds(stage);

これは、ステージに対して長方形を取得するために直接ジャンプします。次に、具体的に言及した値にアクセスできます。

rect.bottomRight
rect.topLeft
4
Michael Martin

オブジェクトが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;
_

等。

2
Marty

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;
1
csomakk