2013-08-27 33 views
0

我一直在寻找在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

main.class.getResource(“original.wav”)为空。你确定它在正确的地方吗? – tom

回答

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.playClip(Art.sound); 

我希望这可以帮助你!