2012-07-29 37 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