【发布时间】:2019-03-25 15:30:45
【问题描述】:
我正在使用 Howler.js 开发一个我正在开发的小闹钟。
对于我的闹钟,我想在当前时间与预定时间匹配时依次播放 2 个音频文件。
我有这个代码:
var play_sound = window[data.sound];
presound.play();
presound.once('end', function(){
play_sound.play();
});
问题是,这段代码播放了我的presound 2 次,然后是play_sound。我不希望它播放前音 2 次,只播放一次。
如果我将代码更改为
presound.play();
play_sound.play();
它似乎有效,它不会同时播放它们,但我担心在某些情况下它可能会。所以我想避免这些文件同时播放,并且我也想避免它们中的任何一个播放不止一次。
如何在利用事件确保没有重叠的同时做我想做的事情?
我也试过这个:
presound.once('play', function() {
presound.once('end', function() {
play_sound.play();
});
});
presound.play();
但它也会播放我的presound 两次。
【问题讨论】:
-
我相信您可能使用了错误的事件。而不是
end它应该是onendper the docs -
@SpencerPollock 这不是它在示例
Listen for events:中所说的。如果它是一个不正确的事件,它不会抛出一个错误吗? -
您将提供一个完整的测试用例,因为您显示的代码只会播放一次声音,因此您正在做的其他事情一定会导致问题。
-
@JamesSimpson 这是完整的测试用例。当我使用该事件时,它会播放两次前音,然后播放
play_sound。如果没有事件,它只会播放每个声音一次。 -
这不是完整的测试用例,因为没有办法拿走你拥有的东西并对其进行测试。它甚至不包括嚎叫的设置位置。
标签: javascript howler.js