从计划中的数组中删除正确的CCSprite

时间:2013-05-24 21:50:36

标签: ios objective-c cocos2d-iphone

在我解释我的问题之前,我对这个项目的工作方式做了非常简洁的说明 - dont cringe at the colors its a neat font

我的问题是 - 当我想检查损坏的时间到了,我想从阵列中删除该对象!我已经尝试在checkForDamage中删除它,但是当它被ccTime调用时,它只删除每个对象(当我使用removeObjectAtIndex:0去掉第一个对象时)。我不能把它放在stopCheckDamage中,因为在检查第一个的伤害时,玩家可能还会放下另一个炸弹。

checkForDamage在用户被点击时效果很好,我break;并调用stopCheckDamage。我的问题是当用户没有被击中时,因为那时不存在的精灵停留在数组中并且只是混乱。我一直在思考我所知道的每一种方式,如果玩家没有被击中,我似乎无法在延迟三秒后找到删除特定对象的方法。

我还为相关代码制作了一个pastebin,您可以找到here

1 个答案:

答案 0 :(得分:1)

这只是一个想法,

你有一个包含所有对象的数组。您只需要知道要删除哪一个。 那么,为什么不给每个对象添加一个tag添加到数组中。当您去删除该对象时,请测试其标记并将其删除。

//Say your array has 10  objects in it, 
//There will be 10 objects each with a tag 1-10.
//When you want to delete an object, 

修改

//Before you add each object to the array, use a `for` loop

for (int i = 0; i < theMaxNumberOfTagsYouWant; i++)

{
self.myObject.tag = i;
[self.myArray addObject:self.myObject];
//This will loop thru as many times as you want, specify using the 
//maxNumberOfTagsYouWant variable. and it will give it a tag, which'll be the value of `i` 
//which gets increased for each object you insert into the array, Then when you want to     
//remove the object, use the below code to remove the object using it's tag.
}

-(void)deleteObjectFromArray{
[self.myArray removeObjectAtIndex:myObject.tag];
}

希望这会有所帮助。 :)