gpt4 book ai didi

c++ - 在 C++ 中使用 SFML。尝试循环播放 wav 文件,但它只播放第一秒左右

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:18:20 25 4
gpt4 key购买 nike

我正在尝试在游戏中播放音乐,但出于某种原因,该文件无法完全播放。这是一首 7 秒的曲子,但只播放了第一秒左右,然后我就安静了。我还以这样一种方式对其进行了编程,即它应该循环,但它并没有这样做。谁能告诉我我做错了什么?同样,文件会播放,但只播放第一秒,而且只播放一次。

sf::Music music;

if (!music.openFromFile("data/sounds/music.wav")){
std::cout << "Error...";
}
else{
music.setLoop(true);
music.setVolume(50);
music.play();
}

最佳答案

只有当 sf::Music 对象在范围内时,音乐才会播放。如果 sf::Music 对象是在方法中声明的,它会在该方法结束时被破坏,音乐也会停止。

给你的 sf::Music 实例类作用域;它会一直播放,直到类超出范围或调用 .stop()/.pause()

所以代替:

class MyClass {
public:
void playMahJam() {
sf::Music jam; // Will be destructed at end of method

if (!music.openFromFile("data/sounds/music.wav")){
std::cout << "Error..." << std::endl;
}
else{
music.setLoop(true);
music.setVolume(50);
music.play();
}
} // end playMahJam()
};

尝试:

class MyClass {
public:
void playMahJam() {

if (!music.openFromFile("data/sounds/music.wav")){
std::cout << "Error..." << std::endl;
}
else{
music.setLoop(true);
music.setVolume(50);
music.play();
}
} // end playMahJam()
private:
sf::Music jam;
};

关于c++ - 在 C++ 中使用 SFML。尝试循环播放 wav 文件,但它只播放第一秒左右,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30202691/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com