Question

Anyone know how I would be able to reduce my following lines of code? I'm still fairly new at objective-c / cocos2D and my following codes look like train wrecks. If it were PHP, I can just create a loop easily to get all these in, but I'm just not familiar enough with obj-c yet to figure it out.

    dinosaur1_c = [CCSprite spriteWithSpriteFrameName:@"dinosaur1-c.png"];
    dinosaur2_c = [CCSprite spriteWithSpriteFrameName:@"dinosaur2-c.png"];
    dinosaur3_c = [CCSprite spriteWithSpriteFrameName:@"dinosaur3-c.png"];
    dinosaur4_c = [CCSprite spriteWithSpriteFrameName:@"dinosaur4-c.png"];
    dinosaur5_c = [CCSprite spriteWithSpriteFrameName:@"dinosaur5-c.png"];
    dinosaur6_c = [CCSprite spriteWithSpriteFrameName:@"dinosaur6-c.png"];
    dinosaur7_c = [CCSprite spriteWithSpriteFrameName:@"dinosaur7-c.png"];
    dinosaur8_c = [CCSprite spriteWithSpriteFrameName:@"dinosaur8-c.png"];
    dinosaur9_c = [CCSprite spriteWithSpriteFrameName:@"dinosaur9-c.png"];
    dinosaur10_c = [CCSprite spriteWithSpriteFrameName:@"dinosaur10-c.png"];
    dinosaur11_c = [CCSprite spriteWithSpriteFrameName:@"dinosaur11-c.png"];

    [sceneSpriteBatchNode addChild:dinosaur1_c];
    [sceneSpriteBatchNode addChild:dinosaur2_c];
    [sceneSpriteBatchNode addChild:dinosaur3_c];
    [sceneSpriteBatchNode addChild:dinosaur4_c];
    [sceneSpriteBatchNode addChild:dinosaur5_c];
    [sceneSpriteBatchNode addChild:dinosaur6_c];
    [sceneSpriteBatchNode addChild:dinosaur7_c];
    [sceneSpriteBatchNode addChild:dinosaur8_c];
    [sceneSpriteBatchNode addChild:dinosaur9_c];
    [sceneSpriteBatchNode addChild:dinosaur10_c];
    [sceneSpriteBatchNode addChild:dinosaur11_c];

Any inputs are greatly appreciated!

Was it helpful?

Solution

I recommend managing these objects with an NSMutableArray, like this:

NSMutableArray *sprites = [[NSMutableArray alloc] init];
for (int i = 1; i <= 11; i++) {
    id dino = [CCSprite spriteWithSpriteFrameName:[NSString stringWithFormat:@"dinosaur%d-c.png",i]];
    [sprites addObject:dino];
    [sceneSpriteBatchNode addChild:dino];
}

// Since I don't know what your addChild: method does, the 'sprites' array exists to let you access the objects later, outside of the 'for' loop if desired...
// So where you would've used dinosaur4_c before, you would instead use [sprites objectAtIndex:4]
// This also demonstrates how to cast the return value from -objectAtIndex: to a CCSprite *
CCSprite *certainDino = (CCSprite *)[sprites objectAtIndex:4];

// Then, when done working with the sprites
[sprites release];
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top