setParent addChild似乎没有刷新cocos2d-x 3.6中的子位置

时间:2015-07-08 19:05:43

标签: c++ cocos2d-x cocos2d-x-3.0 ccsprite ccnode

我想更改sprite的父级,使用旧父节点中的oldparent-> removeChild(child),然后在子sprite中使用child-> setParent(newparent),将新父级作为param传递。也试过newparent-> addChild(child)。

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

1 个答案:

答案 0 :(得分:4)

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

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

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