2014-11-14 194 views
0

我試圖給第二個聲音添加一個延遲,所以它只在第一個聲音播放結束後播放。我怎樣才能做到這一點?我試過setTimeout,但它不起作用。同時停止播放兩個聲音

var notify = new Audio('resources/vox/notify.mp3'); 
var hello = new Audio('resources/vox/hello.mp3'); 

var commands = { 
      'hi': function() { 
      notify.load(); 
      notify.play(); 
      hello.load(); 
      setTimeout(hello.play(), 3000); 
      $('#hello_r').show("slow"); 
     } 
    }; 
+0

[爲什麼這是setTimeout不工作]的可能重複(http://stackoverflow.com/questions/5116223/why-is-this-settimeout-not-working)以及許多其他人 – JJJ 2014-11-14 16:42:24

回答

1

嘗試

setTimeout(function() { hello.play(); }, 3000); 
1

您需要的setTimeout的回調一個匿名函數包裝:

setTimeout(function() { 
    hello.play(); 
}, 3000); 

如果你渲染你的音頻文件中的音頻標籤,你也可以做:

<audio id="Notify" onended="playHello();"></audio> 

假設setTimeout是一個相當黑客的方式來解決這個問題。有關DOM ended屬性的更多信息,請參閱this鏈接。