From a5c81f10e80c725d3ae5b50fa6f0d034476bacf8 Mon Sep 17 00:00:00 2001 From: jorsi Date: Thu, 4 Jun 2020 15:52:15 -0400 Subject: [PATCH] prevent same sound from playing multiple times --- script/audio.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/script/audio.js b/script/audio.js index f6a85ed..2de373a 100644 --- a/script/audio.js +++ b/script/audio.js @@ -51,9 +51,21 @@ var AudioEngine = { }, _playSound: function (buffer) { if (!AudioEngine._canPlayAudio()) return; + if (AudioEngine._currentSoundEffectAudio && + AudioEngine._currentSoundEffectAudio.source.buffer == buffer) { + return; + } var source = AudioEngine._audioContext.createBufferSource(); source.buffer = buffer; + source.onended = function(event) { + // dereference current sound effect when finished + if (AudioEngine._currentSoundEffectAudio && + AudioEngine._currentSoundEffectAudio.source.buffer == buffer) { + AudioEngine._currentSoundEffectAudio = null; + } + }; + source.connect(AudioEngine._master); source.start();