0

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

0 回答 0