节点使用cc.tween后,进行坐标系转换出坐标错误

  • Creator 版本:2.4.3

  • 目标平台:

  • 重现方式:对一个节点进行cc.tween动画后,动画结束后执行

      let worldPos = node.parent.convertToWorldSpaceAR(node.getPosition());
      let pos = this.node.convertToNodeSpaceAR(worldPos);
      this.SysLog("beginPos:%s, worldPos:%s, endPos:", node.getPosition().toString(), worldPos.toString(), pos.toString());
    

打印出来坐标 beginPos:(42.50, -42.50, 0.00), worldPos:(402.50, 430.32, 0.00), endPos: (762.50, 1045.64, 0.00)

正确输出应该是beginPos:(42.50, -42.50, 0.00), worldPos:(402.50, 430.32, 0.00), endPos: (402.50, 430.32, 0.00)

多出来的x和y刚好是游戏界面宽高的一半

补充一点 let pos = this.node.convertToNodeSpaceAR(worldPos);这里的this.node在node节点执行完cc.tween后active=true.

并且只有native才有这个bug

麻烦提供一个 demo

NewProject.zip (244.4 KB)

这是demo用windows模拟器运行,第一次按X键log正常,第二次按X键log就有问题

demo更新

测试完成后发现 应该是native平台widget组件bug, 每次setParent后,widget都会使得node的矩阵产生变化