我需要将下载的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 ......
答案 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];