无法让 SFML 音乐正常工作
Can't get SFML Music to work
好吧,只是一个警告:我真的是C++新手,今年才开始编码。
因此,我一直在尝试编写该程序以使用 SFML 库在控制台中运行。过去我试图让图书馆工作时遇到了问题,但现在我很好。因此,我有一个播放音乐的函数,但是当我尝试在控制台中激活该功能时,我只得到返回值0并且控制台关闭。
相关代码:
void music ()
{
system("CLS");
sf::Music WorldOnFire;
std::string musicInput;
std::cout << "What would you like to listen to?" << std::endl;
std::cout << "> Track 1 - "I Don't Want to Set the World on Fire" by The Ink Spots" << std::endl;
std::cout << "> Back" << std::endl;
std::getline(std::cin, musicInput);
std::transform(musicInput.begin(), musicInput.end(), musicInput.begin(), ::toupper);
musicInput.erase(std::remove(musicInput.begin(), musicInput.end(), ' '), musicInput.end());
if (musicInput == "TRACK1" || musicInput == "TRACK1-"IDON'TWANTTOSETTHEWORLDONFIRE"" || musicInput == "TRACK1-"IDON'TWANTTOSETTHEWORLDONFIRE"BYTHEINKSPOTS" || musicInput == ""IDON'TWANTTOSETTHEWORLDONFIRE"" || musicInput == "IDON'TWANTTOSETTHEWORLDONFIRE")
{
if (!WorldOnFire.openFromFile("WorldOnFire.ogg"))
{
std::cout << "Could not open file. File corrupted or missing." << std::endl;
std::cin.ignore();
music();
}
WorldOnFire.play();
}
else if (musicInput == "BACK")
{
system("CLS");
activitypage ();
}
}
这是所有代码,出于个人原因遗漏。源
WorldOnFire.play();
是非阻塞的。因此,您的程序将在实际播放任何声音之前终止。
您需要在应用程序中添加某种循环。它可以像贪婪的 while(正在播放)一样简单:
while (WorldOnFire.getStatus() == sf::Music::Playing);
或更节能一点:
sf::sleep(WorldOnFire.getDuration() - WorldOnFire.getPlayingOffset());
相关文章:
- QSqlquery prepare()和bindvalue()不工作
- 导入库可以跨dll版本工作吗
- 以螺旋方式打印矩阵的程序.(工作不好)
- 对象指针在c++中是如何工作的
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- VSOMEIP-2个设备之间的通信(TCP/UDP)不工作
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- C++为线程工作动态地分割例程
- 为什么我的 std::ref 无法按预期工作?
- 布尔比较运算符是如何在C++中工作的
- SampleConsensusPrerejective(ext.RANSAC)是如何真正工作的
- 不确定要在我的main中放入什么才能使我的代码正常工作
- 为什么std::condition_variable notify_all的工作速度比notify_one快(对于随机请
- <<操作员在下面的行中工作
- 有人能解释一下为什么下界是这样工作的吗C++的
- ExtractIconEx:可以工作,但偶尔会崩溃
- C++中的memset函数工作不正常
- 为什么STD ::计数将常数传递给Lambda,而不是在弦上工作时而不是字符
- sdl软件渲染器不工作,工作在硬件加速的一个
- C++程序已停止工作-求解常微分方程