我正在使用Howler.js处理一个正在工作的小闹钟。
对于我的闹钟,我想在当前时间与预定时间匹配时顺序播放2个音频文件。
我有以下代码:
var play_sound = window[data.sound];
presound.play();
presound.once('end', function(){
play_sound.play();
});
问题是,此代码播放了我的presound
2次,然后播放了play_sound
。我不希望它只播放一次两次。
如果我将代码更改为
presound.play();
play_sound.play();
这似乎可行,但不能同时播放,但我担心在某些情况下可能会奏效。因此,我希望避免同时播放这些文件,并且也希望避免其中任何一个播放不止一次。
在利用事件来确保没有重叠时,我该怎么做?
我也尝试过:
presound.once('play', function() {
presound.once('end', function() {
play_sound.play();
});
});
presound.play();
但它还会播放我的presound
两次。
答案 0 :(得分:0)
Here我可以看到另一个带有end
事件的示例:
// Fires when the sound finishes playing.
sound.on('end', function(){
console.log('Finished!');
});
您尝试使用on
而不是once
吗?
UPD:
无法重现问题。
我使用的代码段:
function clickme() {
var presound = new Howl({
src: ['sound.m4a'],
html5: true
});
var play_sound = new Howl({
src: ['sound2.mp3'],
html5: true
});
presound.play();
// Fires when the sound finishes playing.
presound.once('end', function() {
play_sound.play();
});
}
<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/howler/2.1.1/howler.core.min.js"></script>
</head>
<body>
<input type="button" onclick="clickme()" value="Hello" />
</body>
</html>