2012-07-29 64 views
0

我想循环这段代码中的声音。在主try和catch的finally块我这样做:如何制作此声音循环?

if (loop) { 
     auline.flush(); 
     run(); 
    } else { 
     ended=true; 
     auline.drain(); 
     auline.close(); 
    } 

但它会导致一个计算器。我怎样才能安全地循环这个声音而不创建一个新的实例?

回答

3

你从run内调用run,这最终会在你的堆栈溢出异常

填补调用堆栈&结果现在的问题是,你怎么克服呢?

您需要在运行方法中循环。我能想到的最好的办法是有一个“退出”触发run方法

public void run() { 
    while(loop) { 
     //...play sound 
    } 
} 

你可以使用stop方法也触发loop标志

+1

参见['Clip.loop(剪辑.LOOP_CONTINUOUSLY)'](http://docs.oracle.com/javase/7/docs/api/javax/sound/sampled/Clip.html#loop%28int%29),如[Java声音信息。页面(http://stackoverflow.com/tags/javasound/info)。 – 2012-07-29 09:42:40