1

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

 sf::Image blockImage;

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

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

谢谢!

4

2 回答 2

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 文件夹中。

希望这可以解决问题!

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

于 2010-10-17T04:03:32.220 回答
0

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

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

于 2010-08-09T11:31:59.573 回答