setParent addChild не обновляет позицию детей в cocos2d-x 3.6

Я хочу изменить родителя спрайта, используя oldparent-> removeChild (child) из старого родительского узла, а затем child-> setParent (newparent) в дочернем спрайте, передавая нового родителя в качестве параметра. также пробовал с newparent-> addChild (child).

Проблема в том, что положение ребенка не меняется после этой операции. Я ожидаю увидеть дочерний спрайт, изменяющий свою позицию на новую позицию относительно родительского преобразования.
Это ожидаемое поведение, или мне нужно вызвать какой-нибудь метод обновления, чтобы принудительно обновить дочернее преобразование?

2

Решение

Прошлой ночью я наконец обнаружил проблему. Это происходит после того, как я решил добавить child-> removeFromParentAndCleanup () перед добавлением дочернего элемента к новому родителю.
в этот момент программа потерпела крах без подсказок в gdb.
Это заставляет меня заподозрить неверную проблему с памятью … (может быть, ребенок стирается на заднем плане, когда видит, что он сирота?): Поэтому я пытаюсь:

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

и сбой, и проблема с обновлением относительной позиции исчезли!

4

Другие решения