Objective-C / Cocos2D Повторение кода Сокращение - PullRequest
3 голосов
/ 22 февраля 2012

Кто-нибудь знает, как я смогу сократить мои следующие строки кода? Я все еще довольно новичок в target-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];

Любые отзывы приветствуются!

1 Ответ

4 голосов
/ 22 февраля 2012

Я рекомендую управлять этими объектами с 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];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...