如何在Flash/AS3中获取/设置MovieClip的绝对位置?绝对地,我指的是它相对于舞台的起源的位置.
我目前有这个二传手:
class MyMovieClip extends MovieClip { function set xAbs(var x:Number):void { this.x = -(this.parent.localToGlobal(new Point()).x) + x; } }
这似乎有效,但我觉得它需要舞台左对齐.
但是,我没有工作的吸气剂.这不起作用:
public function get xAbs():Number { return -(this.parent.localToGlobal(new Point()).x) + this.x; // Doesn't work }
我的目标是一个有效的解决方案,并适用于所有Stage对齐,但它很棘手.我在舞台上使用它,这相对于浏览器的窗口大小.
编辑:这适用于左上角对齐的舞台; 不确定其他人:
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; }
moritzstefan.. 9
两件事情:
为什么要减法?
var x=this.parent.localToGlobal(new Point(this.x,0)).x;
应该给出正确的结果.如果缩放父剪辑,则缩放因子将使您的计算失效...
只是在黑暗中拍摄,但你可以添加一个globalToLocal(this.stage)
补偿对齐问题?
两件事情:
为什么要减法?
var x=this.parent.localToGlobal(new Point(this.x,0)).x;
应该给出正确的结果.如果缩放父剪辑,则缩放因子将使您的计算失效...
只是在黑暗中拍摄,但你可以添加一个globalToLocal(this.stage)
补偿对齐问题?
非常感谢!!!!
要获得与阶段使用相关的对象位置:
(对象为DisplayObject).localToGlobal(new Point())。x;
(对象为DisplayObject).localToGlobal(new Point())。y;