我想更改sprite的父级,使用旧父节点中的oldparent-> removeChild(child),然后在子sprite中使用child-> setParent(newparent),将新父级作为param传递。也试过newparent-> addChild(child)。
问题是在该手术后孩子的位置不会改变。我希望看到子精灵将其位置改为相对于父变换的新位置。 这是预期的行为还是我需要调用一些更新方法来强制刷新子转换?
答案 0 :(得分:4)
昨晚我终于发现了这个问题。它是在我决定在将子项添加到新父项之前添加child-> removeFromParentAndCleanup()之后发生的。 在这一点上,该程序在gdb中没有更多的线索而崩溃。 这让我怀疑无效的内存问题..(当它看到它是孤儿时,孩子可能会在后台被删除?):所以我尝试:
child->retain();
child->removeFromParent();
newparent->addChild(child);
child->release();
崩溃和相对位置更新的问题都消失了!