gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 01:00:20 25 4
gpt4 key购买 nike

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

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

最佳答案

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

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

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

关于c++ - setParent addChild 似乎没有刷新 cocos2d-x 3.6 中的子位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31301539/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com