user21293
user21293

Reputation: 6479

IPhone and Cocos2d Sprites/Layers

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!

Upvotes: 2

Views: 8887

Answers (3)

buildsucceeded
buildsucceeded

Reputation: 4243

There's also [mySprite removeFromParentAndCleanup:YES].

Upvotes: 2

user21293
user21293

Reputation: 6479

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]];

Upvotes: 2

James Eichele
James Eichele

Reputation: 119214

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

Upvotes: 3

Related Questions