SDL_Mixer音乐必须播放两次才能工作

时间:2017-06-07 18:40:09

标签: c++ windows sdl-2 sdl-mixer

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

0 个答案:

没有答案