求教,node.setParent后怎么保持原来的位置和大小不变

已知节点原来的scale不为1,改变父物体后位置和大小都变了。

试过这么写不行:
let worldpos = node.getWorldPosition();
node.setParent(newParent);
node.setWorldPosition(worldpos);

下面这种做法也不行:
let worldpos = node.convertToWorldSpaceAR(Vec2.ZERO);
node.setParent(newParent);
node.setPosition(newParent.convertToNodeSpaceAR(worldpos));

请问怎么实现像编辑器那种拖动节点后位置大小不变的效果?

你写的没问题

let pos = targetNode.parent.convertToWorldSpaceAR(targetNode.getPosition());
let pos2 = newParent.convertToNodeSpaceAR(pos);
targetNode.parent = newParent;
targetNode.position = pos2;