我正在尝试在SFML中播放声音文件,但是没有播放。这是声音(警告:音量大):http://freesound.org/people/thanvannispen/sounds/9550/。我已经使用了在线转换器将其转换为wav(http://audio.online-convert.com/convert-to-wav),但是声音在Windows中可以正常播放,所以这不应该是问题。

声音管理器

#pragma once

#include <SFML\Audio.hpp>
#include <map>

class SoundManager
{
public:
    SoundManager();
    ~SoundManager();

    static bool load();

    static std::map<std::string, sf::Sound> sound;
};

声音管理器
#include "SoundManager.h"
#include <SFML\Audio.hpp>
#include <map>

std::map<std::string, sf::Sound> SoundManager::sound = std::map<std::string, sf::Sound>();

SoundManager::SoundManager()
{
}

SoundManager::~SoundManager()
{
}

bool SoundManager::load() {
    sf::SoundBuffer laughterBuffer;
    if (!laughterBuffer.loadFromFile("data/sound/laughter.wav")) {
        return false;
    }
    sf::Sound laughter;
    laughter.setBuffer(laughterBuffer);
    SoundManager::sound["laughter"] = laughter;
}

在这里,我加载声音:
Logger::print("Loading sound...");
if (!SoundManager::load()) {
    Logger::error("Failed to load sound! Exiting...");
    exit();
}
Logger::print("Sound loaded.");

我在进入游戏循环之前就这样玩(我尝试过从多个地方调用它;没有用)
SoundManager::sound["laughter"].play();

当我第一次尝试导入SFML \ Audio.hpp时,它给我一个关于找不到libsndfile-1.dll的错误,因此我将其复制/粘贴到该文件夹​​中,现在可以使用了,但是我不确定为什么会这样,因为我是静态链接。可能与我链接到SFML的方式有关吗?
sfml-main.lib
sfml-network-s.lib
ws2_32.lib
sfml-audio-s.lib
sndfile.lib
openal32.lib
sfml-window-s.lib
sfml-system-s.lib
opengl32.lib
gdi32.lib
winmm.lib
sfml-graphics-s.lib
glew.lib
freetype.lib
jpeg.lib

最佳答案

从SFML文档中了解sf::Sound::setBuffer():


laughterBuffer并非如此。

我建议看看Thor resourcessftools resources

09-10 11:04
查看更多