Заполните NSMutableArray CCSprites через цикл for

Привет, ребята, используя obj-c и фреймворк cocos2d; Как бы я заполнил NSMutableArray CCSprite с циклом for, чтобы уменьшить код. У меня есть +100 спрайтов/изображений, которые нужно поместить в этот массив, поэтому необходим цикл for.

Это мой текущий код:

_backgrounds = [[NSMutableArray alloc]initWithCapacity:31];
for (int i = 31; i > 1; i--){
        [_backgrounds addObject:
         [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:
          [NSString stringWithFormat:@"background_%d.png", i]]];
    }

Я ищу что-то вроде этого: (Хотя этот код не работает), for (int i = 31; i > 1; i--){ [backgrounds addObject:[CCSprite spriteWithFile:@"background%d.png", i]]; }

Заранее спасибо, Оливер.


person Ospho    schedule 16.02.2011    source источник
comment
Похоже, вы уже написали код, который делает то, что вы описываете. Каков твой вопрос?   -  person Chuck    schedule 17.02.2011
comment
В основном я получаю сообщение об ошибке в консоли: «NSInvalidArgumentException», причина: «*** -[NSMutableArray insertObject:atIndex:]: попытка вставить нулевой объект в 0»   -  person Ospho    schedule 17.02.2011
comment
Ну, ошибка говорит о том, что вы пытаетесь вставить нулевой объект. В этом случае ваш CCSpriteFrameCache создается неправильно. Вы уверены, что ссылаетесь на правильный файл и что объект устанавливается? Попробуйте создать объект перед его добавлением, а затем NSLog объекта, чтобы убедиться, что это то, что вы ожидаете.   -  person sosborn    schedule 17.02.2011
comment
Хм, я ничего не инициализировал и не определил для CCSpriteFrameCache, я нашел этот код в Интернете, изменил его с помощью своего NSMutableArray и вставил. Как мне инициализировать CCSpriteFrameCache?   -  person Ospho    schedule 17.02.2011


Ответы (1)


Скорее всего, ваш общий CCSpriteFrameCache не содержит никаких значений. Вы должны заполнить его, прежде чем получить доступ к чему-либо из него.

person avizzini    schedule 17.02.2011
comment
Я добавил эту строку в метод init{: [[CCSpriteFrameCache alloc] init]; Это вызывает ту же ошибку: 2011-02-17 13:46:26.875 SS2D[699:207] cocos2d: CCSpriteFrameCache: кадр 'background_31.png' не найден 2011-02-17 13:46:26.880 SS2D[699:207] *** Завершение работы приложения из-за необработанного исключения «NSInvalidArgumentException», причина: «*** -[NSMutableArray insertObject:atIndex:]: попытка вставить нулевой объект в 0» Все изображения находятся в xcode, сейчас я повторно импортирую их для двойной проверки . - person Ospho; 17.02.2011
comment
Ладно, я разобрался, все равно спасибо: for (int i = 31; i › 1; i--){ [_backgrounds addObject:[CCSprite spriteWithFile: [NSString stringWithFormat:@background_%d.png, i]]]; } - person Ospho; 17.02.2011