2
votes

I am using cocos2d-iphone to place Sprites onto a Layer to setup a game playfield. At certain points in the game, certain Sprites need to be removed based upon game conditions. What I would like to do is setup an array of Sprite pointers, but I have two questions:

What's the best way to place Sprite pointers in an array?

How does one remove the Sprite in cocos2d with only a pointer to the Sprite? I know how to do it from its parent layer, but that is too runtime intensive for the main game loop.

Thanks in advance!

3
Please feel free to accept your own answer instead of mine. By the sound of things, you were able to get it working using your method, and I won't be offended! :) - e.James

3 Answers

3
votes

The Sprite class inherits from CocosNode, so you should be able to call spritePointer.parent.remove(spritePointer)

2
votes

I figured it out. If anyone else is interested, the way to do it is to declare an array of Sprite pointers, such as:

Sprite * mySprites[10][10]; // assuming a 10x10 playfield where obstacles get placed

Then, when setting up your Sprites:

mySprites[0][0] = [Sprite spriteWithFile: @"obstacle.png"];   
[myLayer add:mySprites[0][0]];  

To remove the Sprite:

[myLayer remove:mySprites[0][0]];
2
votes

There's also [mySprite removeFromParentAndCleanup:YES].