添加BGM.wav并且循环播放了,但是感觉重叠播放了
时间: 2024-03-20 07:44:36 浏览: 19
如果您已经在Java GUI程序中成功添加了BGM.wav并且可以循环播放,但是感觉到了重叠播放的问题,那么有可能是由于您多次触发了播放事件,导致多次播放音频。
为了避免这个问题,您可以在程序中使用一个标志来记录当前是否正在播放音频。当您需要开始播放音频时,首先检查标志是否为false,如果是,则开始播放音频,并将标志设置为true。当音频播放完成后,将标志设置为false。这样,即使多次触发播放事件,也只会播放一次音频。
以下是一个示例代码片段,演示如何在Java GUI程序中添加BGM.wav并且循环播放,并解决重叠播放的问题:
```
import java.io.File;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.swing.JFrame;
import javax.swing.JButton;
public class BGMPlayer extends JFrame {
private boolean isPlaying = false;
private Clip clip;
public BGMPlayer() {
JButton playButton = new JButton("Play");
playButton.addActionListener((e) -> {
if (!isPlaying) {
playBGM();
}
});
add(playButton);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300, 200);
setVisible(true);
}
private void playBGM() {
try {
File bgmFile = new File("BGM.wav");
clip = AudioSystem.getClip();
clip.open(AudioSystem.getAudioInputStream(bgmFile));
clip.loop(Clip.LOOP_CONTINUOUSLY);
isPlaying = true;
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new BGMPlayer();
}
}
```
在上面的示例代码中,isPlaying变量用于记录当前是否正在播放音频。playBGM()方法用于播放音频,并将isPlaying设置为true。在播放完成后,将isPlaying设置为false。在actionPerformed()方法中,如果isPlaying为false,则开始播放音频,否则不执行任何操作。这样,即使多次触发播放事件,也只会播放一次音频。