我只是在理解Flash的localToGlobal功能方面遇到了一些麻烦。我有一个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 = ???
感谢您提供的任何帮助。
答案 0 :(得分: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;
我们使用父母,因为这就是剪辑的相对内容。
有意义吗?