当前位置: 代码迷 >> J2SE >> 关于在java中播放声音的有关问题
  详细解决方案

关于在java中播放声音的有关问题

热度:226   发布时间:2016-04-24 02:29:31.0
求助关于在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(); //停止      }
  相关解决方案