0

我有一个更大的项目,但我可以将问题缩小到这个例子:

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

有人可以解释如何在精灵中获取子精灵的实际坐标(本地或全局,我知道你可以在两者之间转换)?

4

2 回答 2

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

您的代码如下:

在此处输入图像描述

我的代码如下:

在此处输入图像描述

于 2013-02-27T16:16:41.453 回答
0

试试这个!

var point:Point = new Point(spr.x, spr.y);
point = localToGlobal(point);
trace('Child coords: ' + point);
于 2013-02-27T16:32:40.003 回答