Actionscript 3 Flash/AS3;获取/设置电影剪辑的绝对位置?

Actionscript 3 Flash/AS3;获取/设置电影剪辑的绝对位置?,actionscript-3,flash,actionscript,Actionscript 3,Flash,Actionscript,如何在Flash/AS3中获取/设置电影剪辑的绝对位置?我所说的绝对,是指它相对于舞台的猎户座的位置 我目前有一个setter: class MyMovieClip extends MovieClip { function set xAbs(var x:Number):void { this.x = -(this.parent.localToGlobal(new Point()).x) + x; } } 这似乎有效,但我觉得这需要舞台左对齐 然而,我没有一个有效的gett

如何在Flash/AS3中获取/设置电影剪辑的绝对位置?我所说的绝对,是指它相对于舞台的猎户座的位置

我目前有一个setter:

class MyMovieClip extends MovieClip
{
  function set xAbs(var x:Number):void
  {
    this.x = -(this.parent.localToGlobal(new Point()).x) + x;
  } 
}
这似乎有效,但我觉得这需要舞台左对齐

然而,我没有一个有效的getter。这不起作用:

public function get xAbs():Number 
{
  return -(this.parent.localToGlobal(new Point()).x) + this.x; // Doesn't work
}       
我的目标是找到一个有效的解决方案,并且可以与所有阶段对齐,但这很棘手。我在一个与浏览器窗口大小相关的舞台上使用它

编辑:适用于左上对齐的舞台;对其他人不确定:

public function get AbsX():Number 
{
    return this.localToGlobal(new Point(0, 0)).x;
}       
public function get AbsY():Number 
{
    return this.localToGlobal(new Point(0, 0)).y;
}       
public function set AbsX(x:Number):void
{
    this.x = x - this.parent.localToGlobal(new Point(0, 0)).x;
}
public function set AbsY(y:Number):void
{
    this.y = y - this.parent.localToGlobal(new Point(0, 0)).y;
}
两件事:

为什么要删减

var x=this.parent.localToGlobal(new Point(this.x,0)).x; 
应该已经给出正确的结果。如果父片段已缩放,则您的计算将被缩放因子禁用

只是在黑暗中拍摄,但您可以添加一个
全局颜色(this.stage)
来补偿对齐问题?

两件事:

为什么要删减

var x=this.parent.localToGlobal(new Point(this.x,0)).x; 
应该已经给出正确的结果。如果父片段已缩放,则您的计算将被缩放因子禁用


只是在黑暗中拍摄,但是你可以添加一个
全局颜色(this.stage)
来补偿对齐问题?

同意moritzstefaner的观点,你不需要减法阶段,但是对于你的二传手,我实际上认为你应该使用全局颜色,而使用localToGlobal作为你的getter。这些将负责缩放和旋转以及位置。

同意moritzstefaner的观点,即您不需要减法阶段,但是对于您的setter,我实际上认为您应该使用globalToLocal,使用localToGlobal作为getter。这些将负责缩放和旋转以及位置。

我不能使用localToGlobal,因此另一种解决方案是在您想要的范围内获取鼠标的位置:

mynestesprite.addEventListener (MouseEvent.MOUSE_OVER, myover)
function myover(e:MouseEvent){
    // e.target.parent.parent ....
     trace ( e.target.parent.parent.mouseX, e.target.parent.parent.mouseY)
}

我无法使用localToGlobal,因此另一种解决方案是获取鼠标在所需范围内的位置:

mynestesprite.addEventListener (MouseEvent.MOUSE_OVER, myover)
function myover(e:MouseEvent){
    // e.target.parent.parent ....
     trace ( e.target.parent.parent.mouseX, e.target.parent.parent.mouseY)
}
非常感谢你

要获取与舞台相关的对象位置,请使用:

  • (对象作为DisplayObject).localToGlobal(newpoint()).x
  • (对象作为DisplayObject).localToGlobal(newpoint()).y
      非常感谢您

      要获取与舞台相关的对象位置,请使用:

      • (对象作为DisplayObject).localToGlobal(newpoint()).x
      • (对象作为DisplayObject).localToGlobal(newpoint()).y