Зависит от того, как вы спроектировали свой класс 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
и localY
из MouseEvent
будут в порядке.
Edit:
Чтобы получить локальную координату, вы можете попробовать использовать getBounds:
function mouseOverTraceCoords(evt:MouseEvent):void {
var dob:DisplayObject = DisplayObject(evt.target);
var bnds:flash.geom.Rectangle = getBounds(dob.parent);
var localX:Number=e.localX - bnds.x + dob.x;
var localY:Number=e.localY - bnds.y + dob.y;
trace(mouseX, mouseY, evt.localX, evt.localY, localX, localY);
}