我目前正在开发一个简单的音乐播放器,但是,我遇到了一个问题,我可以无限期地循环播放音乐或任何次数> 1,但是如果我尝试只播放一次歌曲,那么什么都不会播放。在这里搜索了大约 30 分钟后,我找不到记录相同问题的问题。
奇怪的是这曾经可以工作,我在它工作后保存,关闭,打开,然后它不再工作。我没有改变任何东西。
我认为这可能是我如何清理 SDL_Mixer 的问题,但经过一个小时的调试后,我离解决方案更近了。
#include <SDL_Mixer.h>
bool Program::_running = false;
void Program::Run()
{
if (_running)
{
return;
}
_running = true;
if (Mix_Init(MIX_INIT_MP3) == 0)
{
std::cout << Mix_GetError();
return;// false;
}
if (Mix_OpenAudio(22050, MIX_DEFAULT_FORMAT, 2, 4096) < 0)
{
return;
}
_music = Mix_LoadMUS("Music/03 - Code Monkey.mp3");
if (_music == nullptr)
{
std::cout << Mix_GetError();
}
else
{
if (Mix_PlayMusic(_music, 1) < 0)
{
std::cout << Mix_GetError();
}
}
while (_running)
{
Update();
Render();
}
}
这是我目前的清理工作:
Program::~Program()
{
Mix_FreeMusic(_music);
Mix_CloseAudio();
}