2012-02-22 4 views
3

Quelqu'un sait-il comment je pourrais réduire mes lignes de code suivantes? Je suis encore relativement nouveau chez objective-c/cocos2D et mes codes suivants ressemblent à des épaves de train. Si c'était PHP, je peux créer facilement une boucle pour obtenir tout cela, mais je ne suis pas encore assez familier avec obj-c pour le comprendre.Objective-C/Cocos2D Réduction du code répétitif

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

Toutes les entrées sont grandement appréciées!

+1

sont 'dinosaur1_c' vos variables d'instance, ou sont-ils Temporaries? – dasblinkenlight

+0

Ce sont des variables d'instance – rizzlerazzle

Répondre

4

Je recommande la gestion de ces objets avec un NSMutableArray, comme ceci:

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

Pourquoi ne pas simplement utiliser un C-Array (ou CCArray)? C'est plus rapide qu'une liste chaînée. –

+0

Vous n'ajoutez jamais rien à 'sprites' –

+0

@JimRhodes Merci; fixé! – bneely