我正在尝试在游戏中运行音乐,但是无论出于何种原因,文件都拒绝完全播放。这是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()/。pape()。
所以:
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;
};