从Cocos2D-v2中的文档文件夹添加spriteframe

时间:2015-10-13 09:10:20

标签: ios cocos2d-iphone

我需要将下载的spriteframe(plist / png set)从Documents文件夹添加到Cocos2D v2中的spriteframe缓存中。

我让这个代码库工作了很长时间,但它不再起作用了,我现在无法弄清楚如何在bundle的根目录下添加不存在的spriteframe内容。

从它看起来,我曾经通过使用相对路径添加plist / png对的spriteframe并将其发送到CCSpriteFrameCache。类似../Documents/hosteddownloads/somespriteframe.plist等内容。通常您只需将myspriteframe.plist发送给[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:spriteframefile];

我知道从捆绑到plist和png的相对路径。如果我只是指定那些路径,那么只有我可以加载CCSpriteFrameCache ......

1 个答案:

答案 0 :(得分:1)

嗯...从未使用相对路径,但这对我有用:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString * _documentDir = [paths objectAtIndex:0];
NSString *fqn = [_documentDir stringByAppendingPathComponent:@"filename.plist"];
TRACE(@"%@", fqn);

在这种情况下,在日志中产生

-[GEFileUtil init] : /Users/yvesleborg/Library/Developer/CoreSimulator/Devices/FBF0C759-4ECB-468D-99FC-6BDA9982351A/data/Containers/Data/Application/2FF9D117-3763-4AE2-A1FA-4B25E1308CC2/Documents/filename.plist

通过这种方式,您可以计算绝对路径,并保护自己免受环境中可能的变化的影响。此外,CCSpriteFrameCache可能会考虑路径是绝对的并且行为恰当的事实。

最后,.plist会嵌入纹理名称,并且可能会产生混淆。我使用另一个构造函数来加载缓存,如下所示:

NSString *plist = [_documentDir stringByAppendingPathComponent:@"filename.plist"];
NSString *png   = [_documentDir stringByAppendingPathComponent:@"filename.png"];
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:plist textureFilename:png];