Flash as3了解localToGlobal

时间:2011-05-19 17:03:03

标签: flash actionscript-3

我只是在理解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 = ???

感谢您提供的任何帮助。

1 个答案:

答案 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;

我们使用父母,因为这就是剪辑的相对内容。

有意义吗?