如何使用多个精灵表? 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 中截屏? [复制]

Cocos2d iphone 应用程序在实际 iphone 上运行异常

Unity - 如何在运行时更改播放器精灵表?

在画布中同时渲染精灵表中的多个部分?

如何在 cocos2d iphone 游戏中保存高分和加载高分

如何以图形方式开发一些 ViewController,然后从 Cocos2d Iphone 2 场景中调用它们?