我试图将声音加载到游戏中,并且在观看了六个不同的YouTube教程之后它才开始工作。
这是我尝试的最后一件事:
public static Mixer mixer;
public static Mixer.Info[] info;
public static DataLine.Info dataline;
public static AudioInputStream stream;
public static Clip title;
public static Clip click;
public static void init()
{
info = AudioSystem.getMixerInfo();
mixer = AudioSystem.getMixer(info[0]);
dataline = new DataLine.Info(Clip.class, null);
title = load("/music/title");
click = load("/effects/click");
}
public static void play(Clip clip)
{
clip.start();
}
public static void stop(Clip clip)
{
clip.stop();
}
public static Clip load(String path)
{
Clip clip = null;
try
{
clip = (Clip) mixer.getLine(dataline);
URL file = Sounds.class.getResource("/assets/sounds/effects/" + path + ".wav");
stream = AudioSystem.getAudioInputStream(file);
clip.open(stream);
}
catch (LineUnavailableException | UnsupportedAudioFileException | IOException e)
{
e.printStackTrace();
}
return clip;
}
加载声音时出现此错误:
Exception in thread "Thread-2" java.lang.NullPointerException
at com.sun.media.sound.StandardMidiFileReader.getSequence(StandardMidiFileReader.java:207)
at javax.sound.midi.MidiSystem.getSequence(MidiSystem.java:841)
at com.sun.media.sound.SoftMidiAudioFileReader.getAudioInputStream(SoftMidiAudioFileReader.java:178)
at javax.sound.sampled.AudioSystem.getAudioInputStream(AudioSystem.java:1147)
at data.resources.Sounds.load(Sounds.java:54)
at data.resources.Sounds.init(Sounds.java:31)
at data.Game.init(Game.java:60)
at data.Game.run(Game.java:69)
at java.lang.Thread.run(Thread.java:745)
文件位于: RES /资产/声音/效果/ clip.wav RES /资产/声音/音乐/ title.wav
我试过了: / RES /资产/ ... RES /资产/ ... /资产/... 资产/...
我试过了: .WAV .MP3 .OGG .WMA .M4A
并没有它们的组合起作用。文件没有损坏。它们在VLC,Windows Media Player以及用它们取代Minecraft的音乐文件(如.ogg' s)时完美无缺。所以他们在Java和普通玩家中都被认可和可玩。
我无法理解我做错了什么。