跳至正文

CocosCreator开发笔记(22)-使用convertToNodeSpace和convertToWorldSpace

  • Cocos

含义

convertToNodeSpace

将一个点转换到节点 (局部) 坐标系,并加上锚点的坐标。
也就是说返回的坐标是相对于节点包围盒左下角的坐标。

convertToNodeSpaceAR

将一个点转换到节点 (局部) 空间坐标系,这个坐标系以锚点为原点。
也就是说返回的坐标是相对于节点原点的坐标。

convertToWorldSpace

将一个相对于节点左下角的坐标位置转换到世界空间坐标系。

convertToWorldSpaceAR

将一个相对于节点原点的坐标位置转换到世界空间坐标系。

使用总结

  1. cocos引擎的世界坐标总是以左下角为原点,即左下角坐标为(0, 0)
  2. convertToNodeSpaceconvertToNodeSpaceAR的输入参数是个世界坐标,返回值是相对于节点的局部坐标;
  3. convertToWorldSpaceconvertToWorldSpaceAR的输入参数是节点相对坐标,返回值是世界坐标;
  4. 如果要把A节点的坐标转换为相对于B节点的坐标,应先把A坐标转换为世界坐标,然后再把得到的世界坐标转换为B坐标;
  5. convertToNodeSpaceAR返回目标节点空间系的局部坐标,一般使用它就够用了;
  6. convertToNodeSpace是在convertToNodeSpaceAR基础上,加上目标节点锚点的坐标,最终得到相对于节点左下角的局部坐标。看下它的源码实现就明白了:
convertToNodeSpace(node, worldPoint) {
    let localPt = node.convertToNodeSpaceAR(worldPoint);
    localPt.x += node.anchorX * node.width;
    localPt.y += node.anchorY * node.height;
    return localPt;
}
标签:

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注