2015-03-31 24 views
0

我有一個2秒長的聲音。它被綁定到輸入鍵。我希望能夠每秒多次按下回車鍵,從而啓用相同聲音的多個層。如何將相同的聲音文件與Audio API分層?

目前我可以發起聲音,但下一個將不會播放,直到第一個完成。

這是我有工作,但在多個按鍵不分層的聲音代碼:

  \t var fart = new Audio('http://www.soundjay.com/human/fart-01.wav'); 
 

 
     \t $(document).keydown(function(e) { 
 
     \t  if(e.keyCode == 13) 
 
     \t  { 
 
     \t  \t fart.play(); 
 
     \t  } 
 
     \t });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
Click here then press enter.

這看起來像它可能包含答案,但我不能夠得到任何可用於我的可執行代碼:Sound effects in JavaScript/HTML5

回答

1

Audio.play方法不是異步的。因此,您的play()方法在返回主循環之前「等待」(塊是合適的術語)直到它完成。

大多數JavaScript調用都是阻塞的(和單線程),因此您的應用程序通常會在進入下一行之前等待某些內容完成。要在JavaScript中執行一些異步操作,您需要使用類似setTimeout或setInterval的函數來調用您的函數。

+0

謝謝你能提供一個setTimeout或setInterval的例子嗎? – sjmartin 2015-03-31 03:57:27

+0

我認爲你應該瞭解如何/爲什麼要做某件事以及你的期望。但在這裏你是:setTimeout(func,0); – 2015-03-31 04:00:40

+0

謝謝,但那並沒有解決問題。 – sjmartin 2015-03-31 04:07:46

相關問題