2013-10-24 90 views
0

我遇到问题,其资源目录中的文件未被识别为处于主包中。在主资源文件夹的主包中找不到纹理图集文件

我创建了一个使用texturePacker使用pvr文件格式的纹理地图集。 texturePacker的输出产生两个文件xxx_iPhone-hd.pvr.ccz和xxx_iPhone-hd.plist。这两个文件存储在我的cocos2d项目的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找到这个文件?

回答

1

您应该确认文件实际上

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

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

如果文件存在,请复制其文件名并粘贴回代码。即使您仔细检查,案件分歧有时也难以发现,难以察觉。

+0

我尝试了你的建议。文件IS在捆绑中。我将文件名复制并粘贴到代码中(包含和不包含-hd后缀)。我仍然有同样的问题。完整路径为零。任何其他想法?做一次清洁也没有帮助。仅供参考:我正在模拟器上运行iPhone Retina(3.5英寸) – JeffB6688

+1

也许尝试从设备上删除应用程序,但通常情况下,尽管从xcode项目中删除了文件,但它仍然存在。 – LearnCocos2D

+0

正在对最后一个建议投注(设备删除)。 – YvesLeBorg

0

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

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

+0

不幸的是,这也不起作用。似乎工作的唯一解决方案是创建这些文件的非高清版本来欺骗cocos2d。 – JeffB6688

相关问题