2014-11-14 190 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链接。