音乐没有开始

The music doesn't start

当我 运行 节目时,音乐没有播放。 我检查了文件是否已预加载而没有问题。 我的文件是 .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();
}

您在循环中调用 music.gest(),循环中又 调用 load() 您确实在循环中调用了 sf::SoundStream::play()也循环,但每次都会重新初始化流。

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