好的,所以我有这段代码,并且可以在Eclipse中播放。但是当我导出它时,它根本不会播放任何声音..我应该如何导出它或者我应该怎么做才能使其正常工作?
package sound;
import java.io.InputStream;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
public class GameSounds
{
public static synchronized void hit()
{
try
{
String resPath = "/sounds/8bit_bomb_explosion.wav"; // *** this is the key ***
InputStream audioInStream = GameSounds.class.getResourceAsStream(resPath);
System.out.println("is audioInStream null?: " + (audioInStream == null)); // test it!
AudioInputStream inputStream = AudioSystem.getAudioInputStream(audioInStream); Clip clip = AudioSystem.getClip();
clip.open(inputStream);
clip.start();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
没有错误..我认为问题是导出..我只是按export,然后选择可执行的jar文件..一切正常,但是音频没有..
而且没有抛出异常
通过记录输出,您的意思是“audioInStream是否为空?”如果是,则输出为false
而且没有抛出异常
最佳答案
问题可能是您正在使用InputStream,并且可能已经测试了它们的可标记性和可重置性。音频文件通常都不支持,因此会触发某种异常。
解决方案是改用URL。然后,您无需经过中间InputStream步骤就可以到达AudioInputStream。
因此,代替构建String,而构建URL并将其作为输入参数提供给getResourceAsStream()方法。如果查看此方法的规范,将看到三个重载:文件,URL,InputStream。我发现URL效果最好,因为URL可以指定打包在JAR文件中的资源,并且未经标记/重置错误测试。
关于java - 制作Java游戏时出现一点错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17631948/