我有一组精灵列表。如果精灵重叠,我想删除最顶层的精灵。
if(popRect1.containsPoint(popRect1,location)) {
BaloonList1.remove( baloons );
baloons.removeSelf();
}
if(popRect2.containsPoint(popRect2,location)) {
BaloonList2.remove( baloons );
baloons.removeSelf();
}
当两个相同列表的精灵重叠并且如果我触摸它们时,只会删除最顶部的精灵...如果2个精灵来自不同的列表,并且当我触摸最顶部精灵时它们都正在移除(就像我的触摸正在拦截..我认为它的发生是因为两个接触点都是精灵的有界矩形)..我搜索了很多。有人说覆盖TouchBegan..registerWithTouchDispatcher ...是否有人有任何想法???????我知道这可能是一个简单的问题4u伙计们。如果你想要更多的代码或描述,请告诉我
答案 0 :(得分:0)
addChild(CCNode child,int z);
如果你设置z的值,如0,1,2,3,4 ..等等..
此后,当您触摸屏幕时,z的值决定删除精灵。 在发生重叠的情况下,首先要删除哪个精灵,给出z的值是max。对其他人。
答案 1 :(得分:0)
你还必须先保存添加了精灵的状态。 假设我们有2个精灵A和B.
情况1)如果A和B具有相同的z值
如果我们添加B精灵,那么在精灵之后,A将出现在B精灵之上。所以我们需要设置最后添加精灵的状态。根据你必须删除精灵。 情况2)如果A和B具有不同的z值 在这种情况下。你有清晰的画面。具有更多z值的精灵将出现在其他精灵之上。所以你可以删除那个精灵。
如果您使用案例1,那么您也必须保持状态。
假设我们有两个ArrayList:ArrayList1和ArrayList2
我们将状态保存为ArrayList:ArrayListStatus1,ArrayListStatus2
我们已将状态初始化为1。 int status = 1;
如果我们在任何ArrayList中添加一个sprite,我们还要将in ArrayListStatus添加到相应的状态数组列表并增加状态,以便下次添加sprite时它将添加一个加号状态。
现在我们有了订单,所以我们可以应用sprite上面的检查。状态对应于状态arraylist。