gpt4 book ai didi

Java - 在背景音乐上播放声音

转载 作者:行者123 更新时间:2023-12-02 05:46:44 25 4
gpt4 key购买 nike

这是我第一次发帖,希望我发帖正确。

我目前正在为我的项目播放背景歌曲,并且我正在尝试在按下按钮时在背景歌曲之上播放声音效果。然而,声音没有播放,bgm 仍在继续。请参阅下面的我的音频类(class)(忽略不好的评论),并提前感谢您的帮助。

package pro;

import java.io.IOException;

import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;

public class Audio
{
private boolean loop = false;
private AudioInputStream ais = null;
private static Clip clip = null;
//declaration of variables

public Audio (String fileName, boolean loop)
//Constructor for the class which fileName and accepts whether the clip needs to loop or not
{
this.loop = loop;
//sets the variable within the class as constructor

try {
clip = AudioSystem.getClip();
ais = AudioSystem.getAudioInputStream(Audio.class.getResource(fileName));
clip.open(ais);

} catch (IOException | UnsupportedAudioFileException | LineUnavailableException e) {
e.printStackTrace();
}
//tries to load file into java's built in audio player, else prints the error to console
}

public void musicStart ()
//starts music
{
if (loop)
{
clip.loop(Clip.LOOP_CONTINUOUSLY);
//starts music on loop if loop is requested
}
else
{
clip.start();
//starts music as not on loop
}

}


public void musicStop ()
//stops the music
{
clip.stop();
}

}

编辑:感谢 MadProgrammer,我通过简单地从剪辑中删除静态找到了问题的解决方案。

最佳答案

删除 Clipstatic 声明。 Audio 的每个实例都应该是独立的,并指向它自己的 Clip

实例

基本上,static 将使 Clip 始终指向最后加载的声音文件,这并不是您真正想要的,因为当您调用 stopMusic 时,您将不知道您真正停止的是哪个剪辑,或者您是否真正停止了任何内容

关于Java - 在背景音乐上播放声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23986793/

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