据我了解,如果剪辑正在重新渲染或捕获音频,则
Clip.isActive
返回 true。 Clip.start
应开始播放声音,因此 clip.isActive
应在以下代码中返回 true。但是 "loop"
永远不会被打印出来。我尝试过使用 while(true)
循环,并且 Clip
播放得很好。难道我理解错了Clip.isActive
?
AudioFileFormat fileFormat
AudioInputStream stream;
try{
fileFormat = AudioSystem.getAudioFileFormat(new File("Sound Files/Firion Battle.wav"));
stream = AudioSystem.getAudioInputStream(new File("Sound Files/Firion Battle.wav"));
}catch(IOException | UnsupportedAudioFileException e){
// exception handling omitted
}
Clip clip;
DataLine.Info info = new DataLine.Info(Clip.class, fileFormat.getFormat());
if (!AudioSystem.isLineSupported(info)){
// error handling omitted
}
try{
clip = (Clip)AudioSystem.getLine(info);
clip.open(stream);
clip.start();
while(clip.isActive()){
System.out.println("loop");// only here for debugging purposes
// loops until clip stops playing
}
}catch (LineUnavailableException | IOException e){
// exception handling omitted
}
我也是初学者,但我认为你应该做
isRunning
而不是isActive