2017-01-05 3 views
1

Я хочу знать, какой метод дочернего вызова вызывается, когда мы удаляем любой узел из его родителя .Какой метод вызывается при удалении узла из родителя

Я создал MyLayer путем расширения класса Layer, а затем добавить свой собственный спрайт MySprite которые расширяют Sprite класс cocos2d-х рамок. Мне нужно уменьшить счетчик, когда ребенок удален, поэтому мне нужен метод, который я бы переопределил в своем классе MySprite.

Я использую этот метод для удаления.

parent->removeChild(child); 

Здесь родитель MyLayer, а child - указатель на MySprite.

ответ

1

Если ребенок бежит эти два метода будут называться:

child->onExitTransitionDidStart(); 
child->onExit(); 

Если убрать ребенка с cleanup = true (это значение по умолчанию), child->cleanup(); будет также называется.

Таким образом, лучшим решением для вас было бы переопределить функцию ребенка с помощью функции virtual void onExit();. И в переопределенном методе не забудьте позвонить Node::onExit(); или каким-либо другим вашим суперклассам.

+0

Могу ли я использовать деструктор для того же ?? – Aryan

+2

Да, но деструктор вызывается только при удалении объекта, вызывается onExit, когда объект удаляется со сцены. – Boby

+0

onExit() - лучший вариант, тогда деструктор, потому что деструктор не вызывается сразу же, когда мы удаляем спрайт из его родителя. – Aryan

Смежные вопросы