2014-03-30 70 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。