【发布时间】:2014-05-12 19:49:26
【问题描述】:
Sprite 动画问题。
使用这个似乎对其他人有用的例子: How to create animation in 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'
显然错误消息是说我的图像文件是 nil,但它看起来非常好。
我尝试重命名文件以删除额外的“-”字符但没有任何更改(我还在 Xcode 之外重命名文件并使用新名称重新导入)。
我所有的图片都在 Resources 文件夹中。
我尝试将资源文件夹中的图像移动到下一级,但仍然出现错误。
它们的命名似乎很好。
还有什么要检查的想法吗?
【问题讨论】:
-
我刚刚在它填充数组之前添加了一个 NSLog:
NSLog(@"discoball1200x2008c16-%d.png:",1);并且调试输出“discoball1200x2008c16-1.png”,这完全是我的第一个图像的文件名。 -
做到了这一点:
[ballAnimFrames addObject:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName: [NSString stringWithFormat:@"discoball1200x2008c16-%d.png", 1]]];但仍然得到相同的错误,即 insertObject 为 nil ... ?!?!?! -
刚刚尝试了我在游戏另一部分中使用的图像,该图像在尝试填充相关数组之前加载(即图像在游戏中显示良好)。该图像在游戏的早期部分显示良好,但当我尝试将其放入数组时声称为零。这似乎表明实际数组为零,但它的初始化方式看起来不错,是吗?
-
您是否将精灵表添加到场景中?
-
我认为我不需要。根据我在 cmets 中提到的各种尝试,这似乎不太可能成为问题。我的假设完全错了吗?