我的朋友让我创建了一个可以与Plague Inc一起使用的应用程序,他希望游戏中的音轨能够在应用程序中播放。在做网络研究时,我已经尝试了一切,没有任何作用。是否可以从java包中调用音轨(如图像)而不是指定文件夹目录和URL?我在网上找到了一些有希望的信息,但是当我尝试运行代码后,AudioInputStream
继续给我错误。我已经尝试使用子句异常,但与main方法严重冲突,应用程序甚至不会运行。我已经尝试将编码放在构造函数中,一个新方法,甚至在main方法本身,但是当我运行应用程序时,所有这些都只是抛出错误(我甚至不知道在哪里放置它以便它可以工作) 。请帮助,因为这会让我感到非常沮丧。
我的包名为Sound,文件名为plague.wav 虽然游戏是Android游戏,但我的应用程序是在Windows PC上运行的
这是我到目前为止的编码:
File sound = new File("/Sound/plague.wav");
AudioInputStream audioIn = AudioSystem.getAudioInputStream(sound);
Clip clip = AudioSystem.getClip();
clip.open(audioIn);
clip.loop(Clip.LOOP_CONTINUOUSLY);
} catch (LineUnavailableException ex) {
Logger.getLogger(knownDiseases.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(knownDiseases.class.getName()).log(Level.SEVERE, null, ex);
} catch (UnsupportedAudioFileException ex) {
Logger.getLogger(knownDiseases.class.getName()).log(Level.SEVERE, null, ex);
}
答案 0 :(得分:1)
您可以将其作为资源流获取 检查一下:
InputStream input = getClass().getResourceAsStream("/Sound/plague.wav");
AudioInputStream audioIn = AudioSystem.getAudioInputStream(input);
Clip clip = AudioSystem.getClip();
clip.open(audioIn);
clip.loop(Clip.LOOP_CONTINUOUSLY);
} catch (LineUnavailableException ex) {
Logger.getLogger(knownDiseases.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(knownDiseases.class.getName()).log(Level.SEVERE, null, ex);
} catch (UnsupportedAudioFileException ex) {
Logger.getLogger(knownDiseases.class.getName()).log(Level.SEVERE, null, ex);
}
这是一个示例类:
import java.io.IOException;
import java.io.InputStream;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.swing.JOptionPane;
import javax.swing.SwingUtilities;
public class Snippet {
public static void main(String[] args) throws Exception {
try {
InputStream input = Snippet.class.getResource("/Sound/sound.wav")
.openStream();
AudioInputStream audioIn = AudioSystem.getAudioInputStream(input);
Clip clip = AudioSystem.getClip();
clip.open(audioIn);
clip.loop(Clip.LOOP_CONTINUOUSLY);
SwingUtilities.invokeLater(new Runnable() {
public void run() {
// A GUI element to prevent the Clip's daemon Thread
// from terminating at the end of the main()
JOptionPane.showMessageDialog(null, "Close to exit!");
}
});
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}