我目前正在制作一个简单的音乐播放器,但是,我遇到了一个问题,我可以无限期地循环音乐或任何次数> 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();
}