2

我正在尝试使用多个精灵表,因为我不能将它们全部放在一张上,并且有两个使我更容易订购它们(精灵表一个精灵在后面并且具有较低的 zOrder)。我目前正在做:

spriteSheet1 = [[CCSpriteSheet spriteSheetWithFile:@"spriteSheet1.png" capacity:3] retain];
[[CCSpriteFrameCache sharedSpriteFrameCache]     addSpriteFramesWithFile:@"spriteSheet1.plist"];
[self addChild:spriteSheet1];

spriteSheet2 = [[CCSpriteSheet spriteSheetWithFile:@"spriteSheet2.png" capacity:4] retain];
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"spriteSheet2.plist"];
[self addChild:spriteSheet2];

CCSprite *sprite = [CCSprite spriteWithSpriteFrameName:@"sprite1.png"];

最后一行因错误而崩溃:由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'Invalid spriteFrame for sprite'SIGABRT

我不允许缓存多个精灵表吗?如果没有,是否有另一种有效的方法来处理这个问题?

4

1 回答 1

0

如果您使用 Zwoptex 创建 spritesheets,请确保使用相互支持的 Zwoptex 和 cocos2d 版本。最近 Zwoptex 发生了重大变化,如果您使用的是较旧的 cocos2d 版本,这可能会解释您的崩溃。

一般来说,您提供的代码应该可以正常工作,因为所有资源文件都已添加到 Xcode 并已正确命名。请记住,iOS 设备是区分大小写的,如果您尝试加载“spriteSheet1.plist”但文件实际上名为“Spritesheet1.plist”,它也会导致错误(可能是断言或崩溃)。

于 2010-07-30T20:14:54.813 回答