2

我有 SoundBuffer。我希望这个缓冲区移动到音乐。现在我保存在文件中并读出,但我不想保存。我能做些什么?现在我有这个代码:

sf::SoundBuffer sb = getSoundBuffer(new_channels,sample_rate);
sb.saveToFile("sound.wav");
std::unique_ptr<sf::Music> Buffer(new sf::Music());
Buffer->openFromFile("sound.wav")
 musicAlias[alias] = std::move(Buffer);
...
music->selected = musicAlias[alias].get();
4

1 回答 1

2

该类sf::Music旨在用于播放从文件加载的长音频数据。如果要播放声音缓冲区中的音乐,请sf::Sound像这样使用:

sf::SoundBuffer sb = getSoundBuffer(new_channels,sample_rate);
std::unique_ptr<sf::Sound> Buffer(new sf::Sound( sb ));
musicAlias[alias] = std::move(Buffer);
...
music->selected = musicAlias[alias].get();

您可能需要将 的类型更改为musicAlias的容器std::unique_ptr<sf::Sound>,但这应该可行,因为sf::Sound该类提供了与该类非常相似的接口sf::Music

于 2016-01-16T22:03:40.657 回答