3

我正在开发一个基于 Javascript 的应用程序,每当用户单击按钮时,我都会在其中使用鼓掌声。用户单击按钮后必须立即播放声音(应该没有延迟)。我使用 audacity 录制了声音并以 wav 格式保存。最初在拍手声之前有一个延迟,当我点击按钮时我可以清楚地听到声音,但有点晚了,因为我已经提到过声音之前有一个延迟(你可以在下图中看到它)。

删除滞后前的 wav 声音

我对声音之前的延迟不感兴趣,因为我希望用户在按下按钮后立即听到声音。所以我大胆地消除了拍手前的滞后,如下所示。

消除拍手前的滞后后

声音再次以wav格式保存,在大胆和winamp播放时我可以清楚地听到声音。但是当我在浏览器中打开应用程序时单击应用程序中的按钮时,拍手声变得非常轻微,好像我根本听不到一样。我真的很困惑,因为我不确定问题是否与文件格式或 javascript 有关。使用javascript单击按钮后,有什么方法可以清楚地播放声音吗?

[更新部分]

真的对不起。我的代码中有一个错误。我将音频的初始时间设置为 0.05,这导致了问题。

tapSound.currentTime=0.05;
tapSound.play();

现在我可以清楚地听到声音,但每次单击按钮时声音仍然存在延迟。

这是我拥有的 javascript 代码

var tapSound=new Audio();
tapSound.src="sounds/tap.wav";
tapSound.preload='auto';
$(".refresh, .backspace, .home, .pause, .about, .backbutton").on('click',function () {
tapSound.currentTime=0.01;
tapSound.play();
});
4

1 回答 1

3

您需要将 Audio 对象的 preload 属性设置为“auto”:

var audio = new Audio();
audio.src = "yourfile";
audio.preload = 'auto';

此代码必须在您加载页面时执行,而不是在您单击按钮时执行。单击按钮时,只需调用音频对象的 play() 方法。

于 2015-08-02T15:47:11.137 回答