当前位置:  开发笔记 > 编程语言 > 正文

闪存/ AS3; 获取/设置MovieClip的绝对位置?

如何解决《闪存/AS3;获取/设置MovieClip的绝对位置?》经验,为你挑选了2个好方法。

如何在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)补偿对齐问题?



1> moritzstefan..:

两件事情:

为什么要减法?

var x=this.parent.localToGlobal(new Point(this.x,0)).x; 

应该给出正确的结果.如果缩放父剪辑,则缩放因子将使您的计算失效...

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



2> 小智..:

非常感谢!!!!

要获得与阶段使用相关的对象位置:

(对象为DisplayObject).localToGlobal(new Point())。x;

(对象为DisplayObject).localToGlobal(new Point())。y;

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有