谁能帮我理解以下内容?
我创建了一些方形精灵,然后删除第一个并显示坐标。结果是:
(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 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)));
}