C++ 音乐没有';开始

C++ 音乐没有';开始,c++,class,audio,sfml,C++,Class,Audio,Sfml,当我运行程序时,音乐没有启动。 我检查了文件是否已预加载,但没有问题。 我的文件是.ogg,sfml支持它。 我不明白为什么我运行程序时没有声音。 加载文件时没有问题 #pragma once #include <SFML/Audio.hpp> class Audio { public: Audio(); ~Audio(); bool load(); bool gest(); private:

当我运行程序时,音乐没有启动。 我检查了文件是否已预加载,但没有问题。 我的文件是.ogg,sfml支持它。 我不明白为什么我运行程序时没有声音。 加载文件时没有问题

#pragma once

#include <SFML/Audio.hpp>

class Audio
{
public:
        Audio();
        ~Audio();
        bool    load();
        bool    gest();
private:
        sf::Music       _main;
};

bool    Audio::load()
{
    if (!_main.openFromFile("res/zelda.ogg"))
                return false;
        return true;
}

bool    Audio::gest()
{
        if (!load())
                return false;
        _main.play();
        return true;
}

int     main(void)
{
        Monitor         window;
        Audio           music;

        window.initWindow();
        while (window.run())
                music.gest();
}
#pragma一次
#包括
课堂音频
{
公众:
音频();
~Audio();
bool-load();
bool gest();
私人:
sf::音乐main;
};
bool Audio::load()
{
if(!\u main.openFromFile(“res/zelda.ogg”))
返回false;
返回true;
}
bool Audio::gest()
{
如果(!load())
返回false;
_main.play();
返回true;
}
内部主(空)
{
监控窗口;
音频音乐;
initWindow();
while(window.run())
音乐;
}

您正在循环中调用
music.gest()
,循环每次都会调用
load()
!您也可以在循环中调用
sf::SoundStream::play()
,但每次都会重新初始化流

无论如何,您不应该在循环中调用
play()
。SFML确保sf::Music实例在其自己的线程上保持流式传输