0

スプライト リストのセットがあります。スプライトが重なっている場合は、一番上にあるスプライトを削除したいと考えています。

if ( popRect1.containsPoint( popRect1, 場所 ) ) {

                       BaloonList1.remove( baloons );
                       baloons.removeSelf();

                 }

if ( popRect2.containsPoint( popRect2, 場所 ) ) {

                       BaloonList2.remove( baloons );
                       baloons.removeSelf();

                 }             

同じリストの 2 つのスプライトがオーバーラップし、それらに触れると一番上のスプライトのみが削除されます...2 つのスプライトが異なるリストからのもので、一番上のスプライトに触れると両方が削除されます (私のタッチが傍受されているように..I両方のタッチポイントがスプライトの境界のある長方形にあるため、それが起こっていると思います..私はたくさん検索しました.TouchBegan..registerWithTouchDispatcherをオーバーライドすると言う人もいます...誰にも何か考えがありますか??????? これは簡単な質問かもしれません.4uの皆さん.これに関するコードや説明がもっと必要な場合はお知らせください.

4

2 に答える 2

0

addChild(CCNode 子、int z);

z の値を 0,1,2,3,4.. のように設定すると..

この後、画面をタッチすると z の値が決定され、スプライトが削除されます。オーバーラップが発生した場合に最初に削除するスプライトを指定します。z の値は最大です。他の人に。

于 2013-02-25T07:25:07.507 に答える
0

最初に追加されたスプライトのステータスも保存する必要があります。2 つのスプライト A と B があるとします。

ケース 1) A と B の両方が同じ z 値を持つ場合

B スプライトを追加し、その後に A スプライトを追加すると、A が B スプライトの上に表示されます。そのため、最後に追加されたスプライトのステータスを設定する必要があります。それによると、スプライトを削除する必要があります。ケース 2) A と B の z 値が異なる場合 この場合。鮮明な画像があります。より多くの z 値を持つスプライトが他のスプライトの上に表示されます。したがって、そのスプライトを削除できます。


あなたの場合、ケース1を使用している場合は、ステータスも維持する必要があります。

ArrayList1 と ArrayList2 の 2 つの ArrayList があるとします。

ステータスを ArrayList として保存しています: ArrayListStatus1,ArrayListStatus2

ステータスを 1 に初期化しました。int status=1;

任意の ArrayList にスプライトを追加する場合は、ArrayListStatus 内を対応するステータス配列リストに追加し、ステータスをインクリメントして、次にスプライトを追加するときにステータスを 1 つ追加する必要があります。

これで順序ができたので、どのスプライトが上にあるかのチェックを適用できます。ステータスは、ステータス arraylist に対応しています。

于 2013-02-25T14:30:21.640 に答える