使用localToGlobal切换图像位置

时间:2012-12-18 00:05:00

标签: actionscript-3

我正在尝试从父容器的坐标转换为全局舞台坐标。这是对象和容器:

 imgSprite.addChild(imgInstance); //imgInstance is imported from class
 imageContainer.addChild(last); 
 imageContainer.addChild(imgSprite); // imgSprite and last are to be replaced 

基本上,我想在imageContainer中切换两个图像的位置。

我应用了localToGlobal()功能,但这没有任何效果。我做错了什么?

这是我的功能,取代了它们。注意:此代码属于类main,容器的父级是stage,每个imgSprite只是添加到imgContainer并通过obj.xobj.y移动(不是在代码中。)

function click(e:MouseEvent):void {     
    var p1:Point = e.currentTarget.localToGlobal(newPoint(e.currentTarget.x, e.currentTarget.y));
    var p2:Point = last.localToGlobal(new Point(last.x, last.y));
    e.currentTarget.x = globalToLocal(p2).x; 
    e.currentTarget.y = globalToLocal(p2).y;
    last.x = globalToLocal(p1).x;
    last.y = globalToLocal(p1).y;
}

据我所知,每个物体都有本地和全球的位置。所以,在这里我将本地位置转换为全局,然后再将其他对象移动到此位置时,我将其转换为本地,因为它们属于相同的父级,它应该导致匹配坐标,但我的图像开始飞来飞去在各个方向,我开始拉我的头发。

1 个答案:

答案 0 :(得分:0)

var p2:Point = last.localToGlobal(new Point(last.x, last.y));

应该是

var p2:Point = last.localToGlobal(new Point(0, 0));

Point中的localToGlobal()参数是DisplayObject中要全球化的点。因此,如果last位于其父容器中的(50,50),则您的代码实际上要求last内的全局坐标为(50,50)。在这种情况下,(0,0)last.xlast.y)。