我正在使用Cocos2d-x而我正在寻找在某个矩形区域下删除精灵的有效方法。
例如,如果我在场景中有很多随机定位的精灵,如果它们属于矩形(x1,y1),(x2,y2),我想删除所有精灵,那么我需要做什么? / p>
我看到有两种方法可以从场景中删除精灵:
this->removeChildByTag(tag);
或
sprite->removeFromParent();
所以从这些方法来看,似乎我们需要以某种方式找到哪些精灵位于该区域内,然后删除它们。
但最有效的方法是什么?
谢谢!
答案 0 :(得分:1)
使用默认cocos功能执行此操作的唯一方法是迭代每个子检测重叠并删除符合条件的节点。 removeFromParent()
以及removeChildByTag()
将调用parent->removeChild(this);
。并且removeChild()
在std::find
子节点中使用Vector
。具有复杂度O(n)。因此,优化的第一步是使用利用子索引的detachChild
。
但如果这还不够快,我建议使用特殊的数据结构来快速搜索重叠的区间树。