对于这个问题,我有两个感兴趣的对象。
Obj1有一个名为objHolder的孩子,在objHolder内部是Obj2。 objHolder的枢轴点设置在Obj1的中间,而Obj2放置在Obj1的圆周附近。目的是旋转objHolder,以使Obj2看起来像在Obj1的圆周上盘旋。
在每帧中,objHolder都会基于我的界面中的其他一些输入值获得一个新的旋转值。
我的问题是,如何每帧获取Obj2的x,y坐标(相对于Obj1,而不是舞台)?
如果我使用localToGlobal(),则不会考虑旋转值。有没有更简单的方法?
答案 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
的枢轴点。