誰かが私が次のことを理解するのを手伝ってくれますか?
いくつかの正方形のスプライトを作成してから、最初のスプライトを削除して座標を表示します。結果は次のとおりです。
(x=0, y=0, w=208, h=40) 0 208
(x=42, y=0, w=166, h=40) 0 166
x座標は0のままですが、幅は変更されていますが、getBoundsは正しい値を示しています。xも変わると思います。xの値が間違っているため、globalToLocalとlocalToGlobalは正しく機能しません。
2番目の(まだ表示されている)長方形の左側のどこかをクリックすると、次のようになります。
2 28 (x=2, y=28)
これは何の役にも立たない。括弧内の値はステージ座標である必要がありますが、そうではありません。
コード:
public function test():void {
var s:Sprite;
var i:int;
var arr:Array = new Array();
for (i = 0; i < 5; ++i)
{
s = new Sprite();
s.graphics.beginFill(0x999);
s.graphics.drawRect(0, 0, 40, 40);
s.graphics.endFill();
s.x = i * 42;
arr.push(s);
addChild(s);
}
trace(this.getBounds(stage), x, width);
removeChild(arr[0]); arr[0] = null;
trace(this.getBounds(stage), x, width);
addEventListener(MouseEvent.CLICK, click);
}
private function click(e:MouseEvent):void {
trace(e.localX, e.localY, localToGlobal(new Point(e.localX, e.localY)));
}