【问题标题】:Which method get called when i remove a node from parent当我从父节点中删除节点时调用哪个方法
【发布时间】:2017-01-05 10:07:47
【问题描述】:

我想知道当我们从它的节点中删除任何节点时,会调用哪个子节点的方法 父母。

我通过扩展Layer类创建了MyLayer,然后添加了我自己的sprite MySprite,它扩展了cocos2d-x框架的Sprite类。当孩子被移除时,我需要减少一个计数器,所以我需要一个在 MySprite 类中覆盖的方法。

我用这个方法去除。

parent->removeChild(child);

这里的 parent 是 MyLayer,child 是 MySprite 指针。

【问题讨论】:

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


    【解决方案1】:

    如果孩子正在运行这两个方法将被调用:

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

    如果使用cleanup = true(这是默认值)删除子级,child->cleanup(); 也会被调用。

    所以对你来说最好的解决方案是覆盖孩子的virtual void onExit(); 函数。在被覆盖的方法中不要忘记调用Node::onExit(); 或任何你的超类。

    【讨论】:

    • 我可以使用析构函数吗??
    • 是的,但是析构函数只在对象被删除时被调用,onExit 在对象被移出舞台时被调用。
    • onExit() 是比析构函数更好的选择,因为当我们从父级移除精灵时,析构函数不会立即调用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-23
    • 1970-01-01
    相关资源
    最近更新 更多