【发布时间】:2020-07-23 22:09:04
【问题描述】:
我正在使用 SFML 制作一个简单的蛇游戏,目前正在尝试添加一种声音,当蛇“吃掉”其中一个点时播放的声音。所以我下载了一个声音文件并将它放在我的项目目录中并将其添加到我的代码中:
sf::SoundBuffer buffer;
buffer.loadFromFile("Crunch.wav")
sf::Sound crunch;
crunch.setBuffer(buffer);
if (snake.isTouching(food))
{
crunch.play();
}
当我从 Visual Studio 运行游戏时,它运行良好。但是我喜欢把我完成的游戏放在我的桌面上,所以我进入了我的 Debug 文件夹,找到了我的 .exe 文件,创建了一个快捷方式并将它放在我的桌面上。但是每当我尝试使用桌面快捷方式运行程序时,输出窗口上都会显示消息“无法打开声音文件'Crunch.wav'(无法打开流)”。有谁知道是什么原因造成的?当我从 VS 运行程序时,程序按预期运行。 提前致谢。
【问题讨论】:
-
好像从桌面启动时当前目录不是程序的目录。
-
@SamVarshavchik 那么当前目录是什么?桌面?
-
@JensB 这是您创建的快捷方式中指定的任何路径。进入快捷方式的属性并将“开始于”字段设置为您想要的任何路径。否则,您应该在加载声音文件时更新您的代码以使用绝对路径而不是相对路径。程序可以通过检查由
argv[0]在main()或GetModuleFileName(NULL)报告的文件名的路径部分来确定其所在文件夹的路径