精灵动画问题。
使用这个似乎适用于其他人的例子: 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:]:对象不能为零'
显然错误信息是说我的图片文件是零,但看起来很好。
我尝试重命名文件以删除额外的“ - ”字符但没有更改(我还重命名了Xcode以外的文件并使用新名称重新导入)。
我的所有图片都在Resources文件夹中。
我尝试将图像从Resources文件夹移到下一级但仍然是错误。
它们的命名似乎很好。
还有什么想法可以检查吗?
答案 0 :(得分:0)
制作精灵表,将其添加到你的
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"YourAnim.plist"];
现在在动画代码中
[ballAnimFrames addObject:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName: [YourAnim.png", i]]];
当你制作精灵表时它会做两件事,1)带有精灵的png和2)带坐标的plist
如果您决定使用我告诉您的程序,请确保将其设置为cocos2d
答案 1 :(得分:0)
请参阅代码Link
现在Cocos2dV3的变化低于。
在链接代码中,CCAnimation
在V3中由CCActionAnimate
替换,而CCRepeatForever
在V3中由CCActionRepeatForever
替换。
同时检查您的.plist图片可能 10 ,因为条件中包含第11个图片。所以可能是你在数组中插入图片的问题,
替换并尝试。
for(int i = 1; i < 11; ++i)
{
// Code
}
改变它的工作正常。