2016-11-05 14 views
1

私はCocos2d-xを使用していますが、矩形領域の下でスプライトを削除する効率的な方法を探しています。Cocos2d-x指定された矩形領域のスプライトを削除する

たとえば、シーンにランダムに配置されたスプライトがたくさんあり、それらが長方形(x1、y1)、(x2、y2)に属している場合、それらをすべて削除したい場合、何をする必要がありますか?

私はシーンからスプライトを削除するには、2つの方法があることがわかり

this->removeChildByTag(tag); 

または

sprite->removeFromParent(); 

したがって、これらの方法の中から、我々がスプライトの内側に位置している見つけるために、何らかの形で必要と思われます領域を削除した後に削除します。

しかし、これを行う最も効率的な方法は何ですか?

ありがとうございます!

答えて

1

デフォルトのココス機能を使用してこれを行う唯一の方法は、各子の繰り返しを検出して重複を検出し、基準に一致するノードを削除することです。 removeFromParent()removeChildByTag()parent->removeChild(this);を呼び出します。 removeChild()は、子ノードのVectorではstd::findを使用します。複雑さO(n)で。したがって、最適化の第一歩は、子のインデックスを利用するdetachChildを使用することです。

しかし、それほど高速ではない場合は、特別なデータ構造を使用して、インターバルツリーのようなオーバーラップをすばやく検索することをおすすめします。

関連する問題