Javascript play()会导致微小的延迟

Javascript play()会导致微小的延迟,javascript,ios,audio,three.js,Javascript,Ios,Audio,Three.js,问题: 我已经用Three.js制作了一个像鸟一样的flappy游戏。每次我轻触屏幕时,都会发出“拍打”的声音。然而,播放这个音频会导致一个微小的延迟,这使得游戏不太流畅。如果我去掉声音,所有的声音都消失了。lagg仅在播放音频时显示,而不是在播放音频时显示 音频设置: 首先,我设置音频如下: var soundFly = new Audio(); soundFly.src = "https://dl.dropbox.com/s/tj7mxg26egzo4zx/flap.wav?dl=0"; s

问题: 我已经用Three.js制作了一个像鸟一样的flappy游戏。每次我轻触屏幕时,都会发出“拍打”的声音。然而,播放这个音频会导致一个微小的延迟,这使得游戏不太流畅。如果我去掉声音,所有的声音都消失了。lagg仅在播放音频时显示,而不是在播放音频时显示

音频设置: 首先,我设置音频如下:

var soundFly = new Audio();
soundFly.src = "https://dl.dropbox.com/s/tj7mxg26egzo4zx/flap.wav?dl=0";
soundFly.preload = "auto";
接下来,我在开始游戏时加载所有音频(单击按钮):

然后,每次触摸屏幕时,我都会播放声音:

this.soundFly.play().catch(function (e)     {
    console.log("soundFly - " + e)
})
这很有效,但出现了微小的滞后

渲染: 以下是设置场景渲染的方式:

var clock = new THREE.Clock();
var delta=0;
clock.start(); //makes rendering timedependent

var render = function ()
{

delta = clock.getDelta();

//All movement is set using speed*delta

requestAnimationFrame(render);
renderer.render(scene, camera);
};
FPS: 我还检查了audio.play()如何影响FPS。我的FPS稳定在59左右。但当我播放音频时,FPS下降到20-30之间,这可能是导致微小滞后的原因(见图):

我使用以下命令检查FPS:

console.log(1/delta);
触摸屏时还可以向控制台输出“flapp”

我希望有人能对此做出解释

致以最良好的祝愿,
Joakim

问题在于您使用HTML5音频实现交互式声音效果。API并非用于此目的。相反,请使用基于Web音频的类,如
THREE.Audio
THREE.PositionalAudio
,这些类可以在不延迟和适当计时的情况下提供声音效果

请阅读以下内容以了解更多信息。它说:


计时以高精度和低延迟进行控制,允许开发人员编写准确响应事件的代码…

非常感谢,我要试试这个!更新:我现在实现了三个。音频,所有的lagg都被删除了!令人惊叹的!非常感谢@Mugen87!
console.log(1/delta);