2014-03-30 71 views
1

嗨我有以下java程序播放一些聲音。我想播放聲音,例如在聲音結束後我想播放聲音2然後聲音3以下是我的java代碼和播放功能聲音。java按順序播放聲音

private void playsound(String file) 
{ 
    try { 
    crit = AudioSystem.getClip(); 
    AudioInputStream inputStream1 = AudioSystem.getAudioInputStream(this.getClass().getResource(file)); 
    crit.open(inputStream1); 
    //if(!crit.isOpen()) 
    { 

    crit.start(); 
    } 

    } catch (Exception ex) { 
     System.out.println(ex.getMessage()); 
    } 
} 

,把它作爲以下

 playsound("/sounds/filesound1.au"); 
    playsound("/sounds/filesound2.au"); 
    playsound("/sounds/filesound3.au"); 

程序行走的聲音在平行我不want.I想玩爲了 問候

回答

0

我得到了下面的代碼從我現在不記得的地方開始,但它會播放音樂:

public static void play(ArrayList<String> files){ 
    byte[] buffer = new byte[4096]; 
    for (String filePath : files) { 
     File file = new File(filePath); 
     try { 
      AudioInputStream is = AudioSystem.getAudioInputStream(file); 
      AudioFormat format = is.getFormat(); 
      SourceDataLine line = AudioSystem.getSourceDataLine(format); 
      line.open(format); 
      line.start(); 
      while (is.available() > 0) { 
       int len = is.read(buffer); 
       line.write(buffer, 0, len); 
      } 
      line.drain(); 
      line.close(); 
     } catch (Exception ex) { 
      ex.printStackTrace(); 
     } 
    } 
} 

因此播放文件並非全部同時播放的原因是因爲write會阻塞,直到寫入所請求的數據量爲止。即使所請求的要寫入的數據量大於數據行的緩衝區大小,也是如此。

請務必在上面的代碼中包含drain()drain()等待緩衝區清空之前它close() s。