在调用此方法之前,我在文档目录中有一个文件,我确认它存在:
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
答案 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之前检查缓存中是否已存在纹理。