Как мне запустить Audio.play с путем в другой функции так же быстро, как если бы они были в той же функции?

#javascript #audio #avaudioplayer

#javascript #Аудио #avaudioplayer

Вопрос:

Я пытаюсь создать игру, похожую на «cookie clicker», в которой мне нужно воспроизводить звук каждый раз, когда нажимается кликер. Моя проблема в том, что новый звук и звук.воспроизведение выполняется в двух отдельных функциях (с глобальными переменными), что вызывает задержку от щелчка до звука.

Есть ли какой-нибудь способ избавиться от задержки, не перемещая их в ту же функцию?

Здесь определяется аудио:

 [].forEach.call(document.getElementById('skins').children, function(e) {
e.onclick = function () {
  klikketskin = this.id;
  clicklyd = new Audio(`Medier/Lyd/Clicker/${klikketskin}.mp3`); }
  

Вот где это воспроизводится (позже в сценарии):

 function clickevent() {
clicklyd.play(); }
  

Как сейчас (включить звук):
https://imgur.com/a/2vf4NWG

Что я хочу (включить звук): https://imgur.com/a/x4wYFq2

Танковый ты! : D

Ответ №1:

Вы должны сбросить значение currentTime свойства 0 , которое позволит воспроизводить звук с самого начала, прежде чем вызывать play() снова.

 function clickevent() {
  clicklyd.currentTime = 0;
  clicklyd.play(); 
}
  

Однако это отключит предыдущий звук, если он еще не завершен.