我一直在youtube上搜索有关如何在java中添加声音的教程,他们似乎都做了同样的事情,但这不适合我:
import java.applet.Applet;
import java.applet.AudioClip;
import javax.swing.JFrame;
public class main extends JFrame{
public main(){
super("hi");
setSize(480, 360);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
}
public static void main(String[] args){
main Main = new main();
AudioClip clip = Applet.newAudioClip(main.class.getResource("original.wav"));
clip.play();
}
}
当我尝试运行它时,它在我初始化剪辑的行上给了一个空指针异常。我怀疑这是因为我有错误的文件网址。为了澄清,该文件位于项目文件夹中。
我也尝试过: AudioClip clip = null; URL url = null;
try {
url = new URL("original.wav");
clip = Applet.newAudioClip(url);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
clip.play();
但这也不起作用。它给了我一个MalformedURLException
答案 0 :(得分:1)
我的工作是使用javax.sound.sampled库。这是我用来加载剪辑的代码 -
public Clip loadClip( String filename )
{
Clip clip = null;
try
{
AudioInputStream audioIn = AudioSystem.getAudioInputStream( getClass().getResource( filename ) );
clip = AudioSystem.getClip();
clip.open( audioIn );
}
catch( Exception e )
{
e.printStackTrace();
}
return clip;
}
你这样实现它。
Clip sound = loadClip( "/sound.wav" );
将声音放在源文件“res”中。我使用单独的功能播放剪辑 -
public void playClip( Clip clip )
{
if( clip.isRunning() )
{
clip.stop();
}
clip.setFramePosition( 0 );
clip.start();
}
我通常把它放在一个Art类中,所以你可以把它称为
Art.playClip( Art.sound );
我希望这可以帮到你!