在资源文件夹中的主包中找不到纹理图集文件

时间:2013-10-24 22:18:59

标签: ios file-io cocos2d-iphone ccspritebatchnode mainbundle

我遇到的问题是,我的资源目录中的文件未被识别为位于主程序包中。

我正在使用texturePacker使用pvr文件格式创建纹理图集。 texturePacker的输出产生两个文件xxx_iPhone-hd.pvr.ccz和xxx_iPhone-hd.plist。这两个文件存储在我的cocos2d项目的Resource目录中。一旦文件存储在Resource文件夹中,我就转到Resource文件夹,然后右键单击“将文件添加到”myProject“'(复制项目到目标框中未选中)。

当我的cocos2d项目运行并尝试加载此文件时,主程序包不知道绝对路径。具体来说,我的代码执行以下代码行:

backgroundBgNode = [CCSpriteBatchNode batchNodeWithFile:@"StoreMenuBackground_iPhone.pvr.ccz"];

cocos2d代码知道该设备具有视网膜显示并修改文件名以创建“StoreMenuBackground_iPhone-hd.pvr.ccz”的relPath。然后它尝试执行以下操作:

NSString *imageDirectory = [relPath stringByDeletingLastPathComponent]; 
fullpath = [[NSBundle mainBundle] pathForResource:file 
                                           ofType:nil 
                                      inDirectory:imageDirectory];

这导致完整路径为零。我之前使用上面的过程创建了一个不同的xxx_iPhone5-hd.pvr.ccz文件,上面的代码成功返回了完整路径。我仔细检查并重新检查拼写,没有看到任何问题。我还尝试删除并重新添加项目“Build Phases”的“Copy Bundle Resources”下的文件。有什么办法可以强制mainBundle找到这个文件吗?

2 个答案:

答案 0 :(得分:1)

您应该验证捆绑包中的文件

您可以通过右键单击构建的包(在项目的DerivedData文件夹中)并选择“显示包内容”来实现。如果您不知道如何查找构建的产品,请执行针对设备的归档构建(归档构建不适用于模拟器)。在打开的“管理器”窗口中,右键单击该应用程序,然后选择“在Finder中显示”,即可显示xcarchive。在xcarchive上运行“show package contents”并导航到/ Products / Applications并在包上执行另一个“show package contents”。

如果文件在那里,但在子文件夹中(不在包的根目录中),那么你在Xcode中创建了一个文件夹引用,用蓝色文件夹图标表示。删除并重新添加,这次取消选中Add File对话框中的“为...创建文件夹引用”复选框。

如果文件在那里,请复制其文件名并将其粘贴回代码中。即使您仔细检查,案例差异有时也难以捉摸,很难注意到。

答案 1 :(得分:0)

然后绝望的措施。在finder中复制侧面的文件...即不在项目目录结构中。将新复制的文件重命名为简单的文件,例如a-hd.pvr.ccz和a.plist(希望你的项目中没有a-hd.pvr.ccz;))。

编辑a-hd.plist以确保最后一个部分指向正确的文件名。将它们从Finder拖到xCode资源文件夹中,选择复制文件。确保更改代码中的名称。从项目中删除以前的文件。深度清理项目。从设备中删除应用程序。跑。如果有效,请重做相同的步骤,将名称恢复为您喜欢的名称。