【问题标题】:Getting an Xcode project's resources in c++在 C++ 中获取 Xcode 项目的资源
【发布时间】:2011-03-26 21:07:31
【问题描述】:

我正在 Xcode 中使用 SFML 编写一个简单的游戏。我有一个要在精灵中使用的块的 .png。目前,我必须在下面的代码 sn-p 中输入图像的完整路径:

 sf::Image blockImage;

 if (!blockImage.LoadFromFile("/Users/me/Development/Tetris/images/block.png")) {
  cerr << "Could not load block image." << endl;
  App.Close();
 }

我宁愿不必像这样硬编码游戏中每个图像的位置。我知道 Xcode 项目可以有“资源”,但我以前从未使用过它,而且根据我在谷歌上的了解,它只对使用 Apple 框架的项目很重要。我可以将我的图像添加为资源吗?我如何实际获取它的位置并在我的代码中使用它?

谢谢!

【问题讨论】:

    标签: c++ xcode resources path sfml


    【解决方案1】:

    你的问题不是很清楚,但我会尽力解释:

    就操作系统而言,Resources 只是应用程序包中的一个文件夹,唯一的特别之处在于,当应用程序启动时,Resources 文件夹是默认的文件路径(称为工作目录)。

    这意味着如果您的应用资源文件中有图像,您可以使用以下方式加载它:

    blockImage.LoadFromFile("/Developer/MyApp/build/Development/Tetris.app/Contents/Resources/block.png");
    

    blockImage.LoadFromFile("block.png");
    

    当您使用此调用时,操作系统会检查 block.png 是否在您的硬盘驱动器的根目录中,但没有找到它然后检查工作目录*

    如果要改变工作目录,可以使用unix常用函数

    chdir(const char *path);
    

    Mac OS X 中包含的内容来自:

    #include <unistd.h>
    

    Arjit 指的是 Xcode 中的一个方便的功能,您可以在任何给定目标中复制文件的构建阶段,并将文件甚至文件夹复制到应用程序的 Resources 文件夹中。

    希望这能解决问题!

    *它实际上可能首先检查工作目录,不确定。

    【讨论】:

      【解决方案2】:

      我认为当您右键单击项目时,它可以选择添加资源添加现有 ITem,您可以轻松添加它

      用于添加文件夹 http://forums.macrumors.com/showthread.php?t=458594

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多