正确删除node节点,代码如下。
void destroyNode(NodePtr &node)
{
m_node->grab();
while (node->getNumChildren()>0)
{
NodePtr temp = node->getChild(0);
node->removeChild(temp);
destroyNode(temp);
}
m_node.destroy();
}
int AppWorldLogic::update() {
if (App::get()->clearKeyState(' '))
{
//method 1
{
NodeReferencePtr ref = NodeReference::create("nodes/2.node");
ref->release();
m_node = ref->getNode();
}
//method 2
//m_node = ref->detachReference();
}
if (App::get()->clearKeyState(','))
{
// remove from editor
if (Editor::get()->isNode(m_node))
Editor::get()->releaseNode(m_node, 0);
if (m_node.get())
{
destroyNode(m_node);
}
}
}