我有一个更大的项目,但我可以将我的问题缩小到这个例子:
public function Main()
{
var myContainer:Sprite = new Sprite;
myContainer.graphics.beginFill(0xFFFFFF);
myContainer.graphics.lineStyle(1);
myContainer.graphics.drawRect(10, 10, 300, 300);
myContainer.graphics.endFill();
addChild(myContainer);
trace('Container coords: ' + myContainer.x + ' ' + myContainer.y);
trace('Instance coords: ' + getChildAt(numChildren - 1).x + ' ' + getChildAt(numChildren - 1).y);
var spr:Sprite = new Sprite;
spr.graphics.beginFill(0xFF0000);
spr.graphics.lineStyle(1);
spr.graphics.drawCircle(30, 30, 10);
spr.graphics.endFill();
myContainer.addChild(spr);
trace('Child coords: ' + spr.x + ' ' + spr.y);
trace('Child instance coords: ' + myContainer.getChildAt(myContainer.numChildren - 1).x + ' ' + myContainer.getChildAt(myContainer.numChildren - 1).y);
}
输出是这样的:
Container coords: 0 0
Instance coords: 0 0
Child coords: 0 0
Child instance coords: 0 0
有人可以解释如何在精灵中获取子精灵的实际坐标(本地或全局,我知道你可以在两者之间转换)?
答案 0 :(得分:0)
您的myContainer
未设置x,y。只设置了图形绘制坐标(10,10)。 spr
反之亦然。
请参阅以下代码。这段代码有些不同,但视觉输出相同。父级的坐标设置为10。绘制坐标集(0,0)。所以myContainer x,y是10,我想,你有点误会。 getChildAt(numChildren-1)
是myContainer
。所以这个协调也一样。 myContainer没有任何孩子。 graphics
不是儿童概念。此外,子坐标与父级相对。
var myContainer:Sprite = new Sprite;
myContainer.x = 10;
myContainer.y = 10;
myContainer.graphics.beginFill(0xFFFFFF);
myContainer.graphics.lineStyle(1);
myContainer.graphics.drawRect(0, 0, 300, 300);
myContainer.graphics.endFill();
addChild(myContainer);
//myContainer.x = 10, myContainer.y=10
//getChildAt(numChildren - 1).x = 10, getChildAt(numChildren - 1).y = 10
您的代码如下:
我的代码如下:
答案 1 :(得分:0)
试试这个!
var point:Point = new Point(spr.x, spr.y);
point = localToGlobal(point);
trace('Child coords: ' + point);