我如何以另一个函数的路径运行Audio.play,就像它们在同一函数中一样快?

问题描述

我正在尝试制作一个像游戏一样的“ cookie Clicker”,每次单击Clicker时都需要播放声音。我的问题是,新的Audio和audio.play在两个单独的函数中(具有全局变量),这导致从单击到声音的延迟。

有什么方法可以消除延迟,而无需将其移至同一功能

在此处定义音频:

[].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

解决方法

您应将currentTime属性重置回到0,这将使声音从头开始重放,然后再次调用play()

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

但是,如果尚未结束,则会切断前一个声音。