我在理解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 = ???
感谢您的任何帮助,您可以提供。
最佳答案
剪辑的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;
我们使用父级,因为多数民众赞成在剪辑将是相对的。
有道理?
关于Flash AS3了解localToGlobal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6062209/