父节点切换问题

以下代码标注黑体那行,就是切换PARENT时不起作用,但是只要不放在tween中单独执行就没问题。断点跟踪“this.node3.parent = this.topNode”这行,居然node3的parent 还是没有变,是以前的parent ,而不是topNode
@property(cc.Node)

node3: cc.Node = null;

@property(cc.Node)

node2: cc.Node = null;

private topNode:cc.Node

onLoad() {

    this.topNode = cc.find("Canvas/Main Camera/bbb/topnode")

    cc.director.on("bbbbb", this.changeParent, this)

}

private changeParent() {

    **this.node3.parent = this.topNode**

    console.log("777777777")

}

start() {

     cc.tween(this.node3).to(1, { x: 50, y: 100 }).call(() => {  cc.director.emit("bbbbb") }).start()

}

this.node3.parent.addChild(this.topNode)

这样用直接报错“Uncaught Error: child already added. It can’t be added again”,但是如何我先 this.node3.parent = null;置空一次,再重新赋值就OK,这是算BUG吗?

不算,应该是逻辑的问题

parent不能直接换, 必须先拿掉旧parent,然后再设置新parent

是的,我先把置空再赋值

先判断下 this.node3.parent !== this.topNode 再执行