2013-08-27 37 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); 

我希望這可以幫助你!