Flash AS3:理解 localToGlobal

11
我有点难理解Flash的localToGlobal功能。我有一个movieClip,它嵌套在许多其他movieclip中。当单击该嵌套剪辑时,我想找到其位置,并将最顶层的包含剪辑移动一定量,以使嵌套剪辑位于舞台的中心(基本上我拥有一棵树形图,我想要的效果是treeContainer将点击的“分支”作为舞台中心平移)。
var treePoint = new Point (treeContainer.x,treeContainer.y); //since treePoint's parent is the stage, don't need global here.

var groupPoint = new Point (groupClip.x,groupClip.y);
var groupPointGlobal = groupClip.localToGlobal(groupPoint);
var stageCenter = new Point (int(stage.stageWidth/2),int(stage.stageHeight)/2);

var shiftAmount = ???

感谢您能提供的任何帮助。
谢谢。
1个回答

23

剪辑的x、y位置始终是相对于其父级的。因此,除非它是舞台的子级,或者父级在0,0处 - 您可以使用localToGlobal来获取其在舞台上的位置。

var globalPoint:Point = myClip.localToGlobal(new Point(0,0));
那会给你该剪辑的全局位置。但从听起来的情况来看,你想走另一条路并进行globalToLocal?globalToLocal将根据全局位置返回本地位置。因此,如果您想设置剪辑的本地位置,以使其位于屏幕中心-假设它是320,240。
var localPoint:Point = myClip.parent.globalToLocal(new Point(320,240));
myClip.x = localPoint.x;
myClip.y = localPoint.y;

我们使用父级元素,因为这是相对于其进行剪辑的。

有道理吗?


1
啊,我明白我做错了什么——我确实想要使用localToGlobal,但我需要通过你上面的方法设置globalPoint。我试图使用groupClip的坐标来设置globalToLocal,而不是使用舞台的0,0位置。 - mheavers
很酷,我不确定你具体想做什么,但我想每个例子都会有所帮助。 - prototypical

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接