gpt4 book ai didi

java - Clip.isRunning() 不起作用

转载 作者:行者123 更新时间:2023-12-01 14:33:27 25 4
gpt4 key购买 nike

我正在尝试为游戏制作背景音乐。由于某种原因,歌曲第一次播放后就不会再播放了。我做错了什么以及如何解决它?我知道我可以使用 .loop() 但我希望它永远重复,并且 .loop() 最终会停止。

 public class playSong 
extends Thread
{

Clip clip=null;

playSong()
{
start();
}

@Override
public void run()
{
while(true)
{
if(clip==null)
{
playSound("fax.wav");
}
else if(!clip.isRunning())
{playSound("fax.wav");}
}
}

public void playSound(String name)
{
try {
File file=new File(this.getClass().getResource(name).getFile());
AudioInputStream audio = AudioSystem.getAudioInputStream(file);
clip = AudioSystem.getClip();
clip.open(audio);
clip.start();
} catch (Exception e) {
System.out.print(e.getMessage());
}
}
}

最佳答案

最好是使用Clip中已有的循环选项。

clip.loop(Clip.LOOP_CONTINUOUSLY);

这里已经有一个答案描述了:Audio clip looping 。它应该通过保持线程运行来解决您描述的最终循环问题。

更新:

这是一个由您的代码组成的完整工作示例,经过修改。

public class PlaySong extends Thread
{
Clip clip=null;

public PlaySong()
{
start();
}

@Override
public void run()
{
playSound("fax.wav");

for(;;)
{
try
{
Thread.sleep(1000);
}
catch(Exception e)
{

}
}
}

public void playSound(String name)
{
try
{
File file = new File(this.getClass().getResource(name).getFile());
AudioInputStream audio = AudioSystem.getAudioInputStream(file);
clip = AudioSystem.getClip();
clip.open(audio);
clip.start();
clip.loop(Clip.LOOP_CONTINUOUSLY);
}
catch(Exception e)
{
System.out.print(e.getMessage());
}
}
}

关于java - Clip.isRunning() 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16688847/

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