关于2d内的坐标转换问题

需要实现的效果如下图
无标题.png

四张image ——【a/b/c/d】需要生成在场景的中间位置。然后通过代码将他们一到粉红色框处的位置,粉红色的image跟绿色的image同级,且父容器都分别为四个黑色框。绿色框需要知道起始位置,终点位置为粉红色image的位置,用粉红色image.x,image.y可以取到,但是中间位置需要通过坐标转换,目前laya提供的坐标转换函数应该怎么实现这个功能?
 
已邀请:

Victor

赞同来自:

transformPoint(globalPoint:Laya.Point,localSp:Laya.Sprite):Laya.Point{
return localSp.globalToLocal(globalPoint,true);
}
globalPoint: 绿色框的坐标 -- 舞台中央坐标(Laya.stage.width*.5,Laya.stage.height*.5)
localSp:黑框容器对象
直接带入上面方法即可,中央的坐标你只知道相对于绿色框的坐标,则需要转换一下,很简单:
 globalPoint = greenBox.localToGlobal(new Laya.Point(x,y));
[code]
如有不懂再问,ps:我试试这个悬赏的钱怎么拿

HumbleDust

赞同来自:

目前的解决办法是拖了四个image在中间用来获得位置。傻瓜式获得起始坐标。

jiaxing_0329

赞同来自:

起始点固定的坐标 终点localToGlobal获取四个位置的坐标 

Victor

赞同来自:

如果对不同显示对象容器里的对象进行移动,一般步骤如下:
以绿色img对象a为例,设目标粉色image对象为a_end
第一步:将起始点和目标点转换为世界坐标

var globalStartPoint:Laya.Point = a.parent.localToGlobal(new Laya.Point(a.x,a.y));
var globalEndPoint:Laya.Point = a_end.parent.localToGlobal(new Laya.Point(a_end.x,a_end.y));
第二步:修改a对象的显示对象层级并移动a对象到目标点
Laya.stage.addChild(a);
a.pos(globalStartPoint.x,globalStartPoint.y);
Laya.tween.to(a,{x:globalEndPoint.x,globalEndPoint.y},300);
第三步:将a对象的显示对象层级修改为a_end对象同层级
a_end.parent.addChild(a);
a.pos(a_end.x,a_end.y);

 
 
 

追风人

赞同来自:

中间坐标 :
1、先转换 上面的黑色矩形的世界 p1 = 上.parent.localToGlobal(上.x,上.y + 上.height), 下面黑色的矩形 p2=下.parent.localToGlobal(下x,下.y),
2、中间起始坐标 = p1.y + Math.abs(p2.y - p1.y)/2;

该问题目前已经被锁定, 无法添加新回复

商务合作
商务合作