浏览代码

cleanup hitsound logic

Kirk Trombley 3 年之前
父节点
当前提交
b28e701009
共有 1 个文件被更改,包括 7 次插入4 次删除
  1. 7 4
      client/src/components/util/KillFeed/KillFeed.jsx

+ 7 - 4
client/src/components/util/KillFeed/KillFeed.jsx

@@ -52,11 +52,14 @@ const KillFeed = () => {
     display.forEach(() => {
       const audio = new Audio(hitsound);
       audio.volume = 0.5;
-      const delay = Math.random() * 500; // delay up to half a second so overlapping sounds better
-      audio.addEventListener("canplaythrough", () =>
-        setTimeout(() => audio.play(), delay)
+      // delay up to half a second so overlapping sounds better
+      const delayedPlay = () =>
+        setTimeout(() => audio.play(), Math.random() * 500);
+      audio.addEventListener("canplaythrough", delayedPlay);
+      // clean up after ourselves in the hopes that the browser actually deletes this audio element
+      audio.addEventListener("ended", () =>
+        audio.removeEventListener("canplaythrough", delayedPlay)
       );
-      audio.addEventListener("ended", () => audio.remove()); // clean up after ourselves
     });
   }, [display]);
   return (