日期:2014-05-20  浏览次数:20690 次

求助关于在java中播放声音的问题
代码如下:
String userdir = "file:/"+System.getProperty("user.dir") ;
try {
  URL eng = new URL(userdir+"/sound/engine.wav") ;
   
  AudioClip sound = JApplet.newAudioClip(eng) ;
   
   
  sound.loop() ;
   
  } catch (Exception e) {
  System.out.println("播放声音出现问题了") ;
  }
这段代码目的是循环播放一个声音文件,但是每次都只听到登的一声便没了下文
但是改成如下代码后就可以了
try {
  URL eng = new URL(userdir+"/sound/engine.wav") ;
   
  AudioClip sound = JApplet.newAudioClip(eng) ;
   
  while(true)
  {
   
  sound.loop() ;
  Thread.sleep(3000) ;
   
  }
  } catch (Exception e) {
  System.out.println("播放声音出现问题了") ;
  }
主要是将sound.loop()方法置于一个while循环中,但是无法解释这是为什么?求解答!

------解决方案--------------------
sound.loop(); 这个是不是就是读取一次音频文件?
------解决方案--------------------
Java code

 没看懂LZ这些的意思:String userdir = "file:/"+System.getProperty("user.dir") ;
                   URL eng = new URL(userdir+"/sound/engine.wav") ;


看看我写的吧。

public static void main(String[] args) {
        File a= new File("J:\\mp.wav"); 
        URL url=null;
        try {
            url = a.toURL();//文件路径转换为URL
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } 
        AudioClip ac=Applet.newAudioClip(url); 
        ac.play();//播放
        try {
            Thread.sleep(1000);//如果需要停止就这里设置(毫秒),需要调用stop(),那样播放1秒后就暂停了
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        //ac.loop(); //循环播放(需要循环播放就调用loop() )
        //ac.stop(); //停止 
     }