Cocos2d v3 Sprite проблема с анимацией

Спрайт проблемы с анимацией.

Используя этот пример, который, кажется, работает для других: Как создать анимацию в cocos2d 3.0?

Итак, я делаю это:

NSMutableArray *ballAnimFrames = [NSMutableArray array];

for(int i = 1; i <= 11; ++i)
{
[ballAnimFrames addObject:[[CCSpriteFrameCache sharedSpriteFrameCache]     
  spriteFrameByName: [NSString stringWithFormat:@"discoball1200x2008c16-%d.png", i]]];
}

CCAnimation *ballAnim = [CCAnimation
                         animationWithSpriteFrames:ballAnimFrames delay:0.1f];

discoBallSprite = [CCSprite spriteWithImageNamed:@"discoball1200x2008c16-1.png"];

discoBallSprite.position  = ccp(upper1Body.position.x,upper1Body.position.y-200);

CCActionAnimate *animationAction = [CCActionAnimate actionWithAnimation:ballAnim];
CCActionRepeatForever *repeatingAnimation = [CCActionRepeatForever actionWithAction:animationAction];
discoBallSprite.scaleX = 0.25;
discoBallSprite.scaleY = 0.25;

[discoBallSprite runAction:repeatingAnimation];

[self addChild:discoBallSprite z:10];

Я получаю следующую ошибку: "NSInvalidArgumentException", причина: "*** -[__NSArrayM insertObject:atIndex:]: объект не может быть nil"

Очевидно, что в сообщении об ошибке говорится, что мой файл изображения - ноль, но, похоже, он в порядке.

Я попытался переименовать файлы, чтобы удалить лишний символ "-", но без изменений (я также переименовал файлы вне XCode и повторно импортировал с новым именем).

Все мои изображения находятся в папке ресурсов.

Я попытался переместить изображения из папки "Ресурсы" на следующий уровень, но ошибка все равно была.

Называя их, кажется, хорошо.

Есть идеи, что еще проверить?

2 ответа

См код ссылка

Теперь изменение для Cocos2dV3 ниже.

В коде ссылки есть CCAnimation то есть заменить на CCActionAnimate в V3, а также CCRepeatForever это заменить CCActionRepeatForever в V3.

Также проверьте, что ваши изображения.plist могут быть на 10 градусов выше, чтобы в них было 11-е изображение. так может быть, это ваша проблема, чтобы вставить изображение в массив,

заменить и попробовать.

for(int i = 1; i < 11; ++i)
{
 // Code
}

Поменяй все нормально.

Сделайте спрайт лист, добавьте его в свой int

[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"YourAnim.plist"];

Теперь в коде анимации

[ballAnimFrames addObject:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName: [YourAnim.png", i]]];

Когда вы создаете лист спрайтов, он делает две вещи: 1) png со спрайтами и 2) лист с координатами

если вы решите использовать программу, о которой я вам говорил, убедитесь, что вы установили ее на cocos2d

Другие вопросы по тегам