0

我遇到了一个问题,即我的资源目录中的文件未被识别为位于主捆绑包中。

我正在使用 texturePacker 使用 pvr 文件格式创建纹理图集。texturePacker 的输出产生两个文件 xxx_iPhone-hd.pvr.ccz 和 xxx_iPhone-hd.plist。这两个文件存储在我的 cocos2d 项目的资源目录中。将文件存储在资源文件夹中后,我转到资源文件夹并右键单击“将文件添加到“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文件,上面的代码成功返回了全路径。我已经非常仔细地检查并重新检查了拼写,没有发现任何问题。我还尝试删除并重新添加项目“构建阶段”的“复制捆绑资源”下的文件。我可以做些什么来强制 mainBundle 找到这个文件吗?

4

2 回答 2

1

您应该验证该文件是否确实捆绑包中。

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

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

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

于 2013-10-24T22:32:17.763 回答
0

绝望的措施。在finder中复制旁边的文件......即不在项目目录结构中。将新复制的文件重命名为非常简单的名称,例如 a-hd.pvr.ccz 和 a.plist(希望您的项目中还没有 a-hd.pvr.ccz ;))。

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

于 2013-10-25T02:33:59.333 回答