2012-02-22 120 views
3

任何人都知道我將如何減少我的以下幾行代碼?我在objective-c/cocos2D方面還是相當新的,我的下面的代碼看起來像火車殘骸。如果是PHP,我可以輕鬆創建一個循環來獲取所有這些內容,但對於obj-c還不夠熟悉,但尚未弄清楚。Objective-C/Cocos2D重複代碼減少

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

任何輸入不勝感激!

+1

是否'dinosaur1_c'你的實例變量,或者是他們臨時變量? – dasblinkenlight 2012-02-22 03:41:04

+0

它們是實例變量 – rizzlerazzle 2012-02-22 04:32:40

回答

4

我建議管理這些對象與NSMutableArray,像這樣:

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

爲什麼不使用C數組(或CCArray)?它比鏈表更快。 – 2012-02-22 03:42:35

+0

你永遠不會添加任何東西到'精靈' – 2012-02-22 03:43:55

+0

@JimRhodes謝謝;固定! – bneely 2012-02-22 03:45:18