2016-11-05 79 views
1

我正在使用Cocos2d-x,我只是尋找有效的方法來刪除某些矩形區域下的精靈。例如,如果我在場景中有很多隨機定位的精靈,並且如果它們屬於矩形(x1,y1),(x2,y2),我想將它們全部刪除,那麼我需要做什麼?Cocos2d-x在指定的矩形區域中刪除精靈

我看到有兩種方法可以從場景中刪除精靈:

this->removeChildByTag(tag); 

sprite->removeFromParent(); 
從這些方法似乎是我們需要以某種方式尋找一種精靈位於內

所以該區域之後刪除它們。

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

謝謝!

回答

1

使用默認的cocos功能來做到這一點的唯一方法是迭代每個子檢測重疊和刪除符合條件的節點。 removeFromParent()以及removeChildByTag()將調用parent->removeChild(this);。並且removeChild()在子節點的Vector中使用std::find。複雜度爲O(n)。因此,優化的第一步將使用利用子索引的detachChild

但是,如果這不夠快,我會建議使用特殊的數據結構來快速搜索重疊像區間樹。