2

我想更改精灵的父节点,使用旧父节点中的 oldparent->removeChild(child),然后在子精灵中使用 child->setParent(newparent),将新父节点作为参数传递。还尝试使用 newparent->addChild(child)。

问题是孩子的位置在手术后没有改变。我希望看到子精灵将其位置更改为相对于父变换的新位置。这是预期的行为还是我需要调用一些更新方法来强制刷新子变换?

4

1 回答 1

4

昨晚我终于发现了问题所在。它发生在我决定在将孩子添加到新父母之前添加一个 child->removeFromParentAndCleanup() 之后。此时,程序崩溃了,gdb 中没有更多的线索。这让我怀疑存在无效的内存问题..(当孩子看到它是孤儿时,可能会在后台被删除?):所以我尝试:

  child->retain();
  child->removeFromParent();
  newparent->addChild(child);
  child->release();

崩溃和更新相对位置的问题都消失了!

于 2015-07-09T13:03:33.607 回答