【问题标题】:Cocos2d-x Remove sprites in specified rectangular areaCocos2d-x 移除指定矩形区域的精灵
【发布时间】:2016-11-05 15:32:49
【问题描述】:

我正在使用 Cocos2d-x,我只是在寻找有效的方法来删除某些矩形区域下的精灵。

例如,如果我在场景中有很多随机定位的精灵,如果它们属于矩形 (x1, y1),(x2, y2),我想将它们全部删除,那么我需要做什么?

我看到有两种方法可以从场景中移除精灵:

this->removeChildByTag(tag);

sprite->removeFromParent();

因此,从这些方法看来,我们需要以某种方式找出哪些精灵位于该区域内,然后删除它们。

但是最有效的方法是什么?

谢谢!

【问题讨论】:

    标签: c++ cocos2d-x sprite


    【解决方案1】:

    使用默认 cocos 功能执行此操作的唯一方法是遍历每个子节点,检测重叠并删除符合条件的节点。 removeFromParent()removeChildByTag() 将调用 parent->removeChild(this);。而removeChild() 在子节点的Vector 中使用std::find。复杂度为 O(n)。所以优化的第一步是使用利用子索引的detachChild

    但如果这还不够快,我建议使用特殊的数据结构来快速搜索像区间树这样的重叠。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多