【问题标题】:Loading Resources in cocos2dx which works both android and iPhone在适用于 android 和 iPhone 的 cocos2dx 中加载资源
【发布时间】:2013-12-08 16:32:13
【问题描述】:

我在 Resources 文件夹中创建了名为“menu_images”的文件夹,其中存储了我的游戏菜单图像。 我的问题: 我必须在 iPhone 和 android 中以两种不同的方式创建 CCSprite 对象。 在 iPhone 中,我可以通过 create() 函数中的“menu_item.png”来传递文件名。 但在 Android 中,我必须在 create() 函数中传递“menu_images/menu_item.png”。这在 iPhone 中不起作用。

我想在两个平台上使用相同的代码。有人请帮我解决这个问题。谢谢。

【问题讨论】:

  • 如果您使用的是Cocos2d-x-2.2,请查看 TestCpp 演示项目中的 FileUtils。
  • 它的文件夹结构似乎与其他示例项目不同。 Classes 文件夹是在 TestCpp/ 和 TestCpp/pro.ios 中创建的,所以很少与此混淆。你试过并构建了 TestCpp 和 android 和 ios 吗?
  • 没有相同的文件夹结构。这可能是 X-Code 的问题,取决于您添加资源的方式。因此,您可以通过为您的 CCFileUtils 对象设置不同的不同搜索路径,然后获取相应图像文件的绝对路径并将其提供给 CCSprite 来解决这些问题。
  • 问题是,我可以添加多个搜索路径并使其正常工作。但正如我上面解释的那样,我必须以两种不同的方式为 android 和 ios 做这件事。
  • 我认为 iOS 没有问题,您只是以不同的方式添加资源。您可以运行TestCpp 并检查它是否适用于所有平台。

标签: android iphone cocos2d-iphone cocos2d-x


【解决方案1】:

只需在 AppDelegate 中为 Resources 中的所有子文件夹设置搜索路径。您可以参考下面的示例代码。

CCFileUtils *fileUtils = CCFileUtils::sharedFileUtils();
std::vector<std::string> searchPaths = fileUtils->getSearchPaths(); 
searchPaths.insert(searchPaths.begin(), "menu_images");
fileUtils->setSearchPaths(searchPaths);

设置搜索路径后,您可以加载任何精灵或文件,例如:

CCSprite* background = CCSprite::create("menu_item.png") 

【讨论】:

  • 如果我有两个文件夹 Folder1/ 和 Folder2/ 并且在这两个文件夹中都有 image.png。如何将 Folder1/image.png 和 Folder2/image.png 加载到两个 CCSprite 中?
  • searchPaths 是 cocos2d-x 将遍历的向量,因此类似于: searchPaths.push_back("Folder1"); searchPaths.push_back("Folder2");
【解决方案2】:

我通过在资源中添加项目仅作为参考解决了这个问题。下面是截图。

【讨论】:

  • 我使用 build_native.sh 脚本为 android 构建了 apk,它将 Resources/ 文件夹中的所有资源复制到 proj.android/assets 文件夹中,这不是它在 android 中工作的原因。跨度>
猜你喜欢
  • 1970-01-01
  • 2013-01-17
  • 1970-01-01
  • 1970-01-01
  • 2013-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多