查找旋转对象的坐标

时间:2018-12-07 07:17:24

标签: actionscript-3 flash air

对于这个问题,我有两个感兴趣的对象。

  1. Obj1是父对象,一个圆形精灵
  2. Obj2是一个嵌套的子对象,方形精灵

Obj1有一个名为objHolder的孩子,在objHolder内部是Obj2。 objHolder的枢轴点设置在Obj1的中间,而Obj2放置在Obj1的圆周附近。目的是旋转objHolder,以使Obj2看起来像在Obj1的圆周上盘旋。

在每帧中,objHolder都会基于我的界面中的其他一些输入值获得一个新的旋转值。

我的问题是,如何每帧获取Obj2的x,y坐标(相对于Obj1,而不是舞台)?

如果我使用localToGlobal(),则不会考虑旋转值。有没有更简单的方法?

1 个答案:

答案 0 :(得分:2)

嗯,应该考虑轮换。您描述自己具有这样的嵌套结构:Obj1 <-objHolder <-Obj2。然后,objHolder位于可见Obj1的中心,而Obj2从objHolder的中心偏移。现在,如果给objHolder旋转一些,您应该会看到Obj2旋转并移动一个圆。这样做吗?如果否,则您的显示列表不是您的描述方式。如果Obj2确实旋转但不移动,则使Obj2的枢轴点位于objHolder的中心,将其移开。

无论如何,答案是使用两种翻译,首先是从源到阶段,然后是从阶段到目标。如果要一个对象在另一个对象系统中的坐标,请执行以下操作:

p=target.globalToLocal(source.localToGlobal(new Point()));

在您的情况下,source是Obj2,而target是Obj1。并且,new Point()是源对象坐标系中坐标(0,0)的点,也就是source的枢轴点。