0

我有一组精灵列表。如果精灵重叠,我想删除最上面的精灵。

如果(popRect1.containsPoint(popRect1,位置)){

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

                 }

如果(popRect2.containsPoint(popRect2,位置)){

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

                 }             

当相同列表的两个精灵重叠并且如果我触摸它们时,只有最上面的精灵将被删除......如果 2 个精灵来自不同的列表并且当我触摸最上面的精灵时它们都被删除(就像我的触摸正在拦截......我认为它的发生是因为两个接触点都是精灵的有界矩形)..我搜索了很多。有人说覆盖 TouchBegan..registerWithTouchDispatcher...有人知道吗???????我知道这可能是一个简单的问题 4u 伙计们。如果您想要更多关于此的代码或描述,请告诉我

4

2 回答 2

0

您还必须保存首先添加的精灵的状态。假设我们有 2 个精灵 A 和 B。

情况 1) 如果 A 和 B 都具有相同的 z 值

如果我们添加 B 精灵,然后添加 A 精灵,那么 A 将出现在 B 精灵的上方。所以我们需要设置最后添加哪个精灵的状态。据此,您必须删除精灵。情况 2) 如果 A 和 B 具有不同的 z 值 在这种情况下。你有清晰的画面。具有更多 z 值的精灵将出现在其他精灵之上。所以你可以删除那个精灵。


在您的情况下,如果您使用案例 1,那么您还必须保持状态。

假设我们有两个 ArrayList:ArrayList1 和 ArrayList2

我们将状态保存为 ArrayList:ArrayListStatus1,ArrayListStatus2

我们已经将状态初始化为 1。 int status=1;

如果我们在任何 ArrayList 中添加一个精灵,我们还必须将 ArrayListStatus 添加到相应的状态数组列表中并增加状态,所以下次我们添加精灵时,它将添加一个加号状态。

现在我们有了订单,所以我们可以应用检查哪个精灵在上面。状态对应于状态数组列表。

于 2013-02-25T14:30:21.640 回答
0

addChild(CCNode child, int z);

如果您将 z 的值设置为 0,1,2,3,4.. 等等..

在此之后,当您在屏幕上触摸时,z 的值被决定删除精灵。在发生重叠的情况下要首先删除的精灵,给z的值是最大值。给其他人。

于 2013-02-25T07:25:07.507 回答