如何使用多个精灵表? cocos2d/iPhone
Posted
技术标签:
【中文标题】如何使用多个精灵表? cocos2d/iPhone【英文标题】:How can I use more than one sprite sheet? cocos2d/iPhone 【发布时间】:2011-03-21 19:29:15 【问题描述】:我正在尝试使用多个精灵表,因为我无法将它们全部放在一个上,而拥有两个使我更容易订购它们(精灵表一个精灵在后面并且具有较低的 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
我不能缓存多个精灵表吗?如果没有,是否有另一种有效的方法来处理这个问题?
【问题讨论】:
【参考方案1】:如果您使用 Zwoptex 创建 spritesheets,请确保使用相互支持的 Zwoptex 和 cocos2d 版本。最近 Zwoptex 发生了重大变化,如果您使用的是较旧的 cocos2d 版本,这可能会导致您的崩溃。
一般来说,您提供的代码应该可以正常工作,因为所有资源文件都已添加到 Xcode 并已正确命名。请记住,ios 设备区分大小写,如果您尝试加载“spriteSheet1.plist”但该文件实际上名为“Spritesheet1.plist”,它也会导致错误(可能是断言或崩溃)。
【讨论】:
以上是关于如何使用多个精灵表? cocos2d/iPhone的主要内容,如果未能解决你的问题,请参考以下文章
Cocos2d iphone 应用程序在实际 iphone 上运行异常