ActionScript本地X和Y坐标的显示对象?

时间:2010-05-27 10:16:45

标签: actionscript-3 mouse coordinates

我正在尝试从精灵中追踪x和y坐标。我在舞台上添加了一个矩形:

var rect:Rectangle = new Rectangle(10, 10, 200, 200);
addChild(rect);
rect.x = rect.y = 100;

将一个Mouse_Move事件添加到rect中,我可以跟踪mouseX和mouseY以在rect上移动时接收舞台的坐标,但是如何获得本地x和y坐标?因此,如果我将鼠标放在rect精灵的最左上方,则mouseX和mouseY将返回10作为全局坐标,但是如何让它返回0和精灵的本地坐标?

我认为localX和localY是我想要的,但这不起作用:

function mouseOverTraceCoords(evt:MouseEvent):void
{
trace(mouseX, mouseY, evt.localX, evt.localY);
}

3 个答案:

答案 0 :(得分:2)

答案 1 :(得分:2)

这取决于你如何设计Rectangle类, 如果你做过这样的事情:

class Rect1 extends Sprite {
    public function Rect1(x:Number, y:Number, width:Number, height:Number) {
        var g:Graphics = graphics;
        g.beginFill(0xff0000, 0.5);
        g.drawRect(x, y, width, height);
        g.endFill();
    }
}

您的本地坐标位于0,0,但您从x,y开始绘制,因此当您获得localx, localY时,您将获得x,y而不是0,0

但如果你的课程被设计成类似的东西:

class Rect2 extends Sprite {
    public function Rect2(x:Number, y:Number, width:Number, height:Number) {
        var g:Graphics = graphics;
        g.beginFill(0xff0000, 0.5);
        g.drawRect(0, 0, width, height);
        g.endFill();

        this.x = x;
        this.y = y;
    }
}

然后您的绘图从0,0开始,您的对象移动到x,y,以便来自localX的{​​{1}}和localY一切正常。

修改 要获取本地坐标,您可以尝试使用getBounds:

MouseEvent

答案 2 :(得分:1)

根本不需要进行任何转换*,你的Rectangle将有两个名为mouseXmouseY的属性,它们包含鼠标的本地坐标。

如果您在矩形内绘制图形偏移量,坐标系统将不会考虑这一点,而是更好地将偏移整个矩形。

*假设你的Rectangle类是DisplayObject的子类,我假设你已经在舞台上了。