如何从文档目录加载CCSpriteBatchNode?

时间:2012-10-02 20:01:18

标签: cocos2d-iphone ccspritebatchnode

在调用此方法之前,我在文档目录中有一个文件,我确认它存在:

CCSpriteBatchNode *batchNode = [[CCSpriteBatchNode alloc] initWithFile:filePath capacity:9];

报告的错误是:

-[CCFileUtils fullPathFromRelativePath:resolutionType:]  : cocos2d: Warning: File not found: decompressed_file.png

cocos2d: CCTexture3d: Can't create Texture.  cgImage is nil;

使用Cocos2d 2.0

2 个答案:

答案 0 :(得分:2)

您可以使用CCSpriteBatchNode并通过设置searchPath从文档目录(或您想要的任何其他目录)中提取文件,例如像这样:

NSString *documentDirectory = aDirectory;
NSMutableArray * loadSearchPath = [[CCFileUtils sharedFileUtils].searchPath mutableCopy];
[loadSearchPath addObject:documentDirectory];
[CCFileUtils sharedFileUtils].searchPath = [loadSearchPath copy];

这会将aDirectory添加到可搜索路径,其中Cocos2D将使用您在[CCSpriteBatchNode batchNodeWithFile:@"aFile"];

中指定的名称查找文件

答案 1 :(得分:1)

cocos2d函数文件方法假设您从捆绑资源加载。我不认为你可以直接加载文件,但你可以做的是将它加载到UIImage中,然后用CGImage创建一个CCTexture2D。使用CCTexture2D,您可以创建CCSpriteBatchNode。

UIImage *img = [UIImage imageWithContentsOfFile:filePath];
CCTexture2d *tex = [[CCTextureCache sharedTextureCache] addCGImage:[img CGImage] forKey:@"myTexture"];
CCSpriteBatchNode *batch = [CCSpriteBatchNode batchNodeWithTexture:tex capacity:9];

当您使用常规方法创建CCSpriteBatchNode时,无论如何,这些步骤都在后台进行。除了捆绑假设。

如果由于某种原因多次制作精灵批处理节点,可以在重新加载UIImage之前检查缓存中是否已存在纹理。