任何人都知道如何减少我的以下代码行?我在objective-c / cocos2D上仍然相当新,我的下面的代码看起来像火车残骸。如果它是PHP,我可以轻松地创建一个循环来获取所有这些,但我只是不熟悉obj-c还没弄明白。
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];
非常感谢任何投入!
答案 0 :(得分: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];