问题: 我使用 Three.js 制作了一个类似 flappybird 的游戏。每次我点击屏幕时,都会发出“拍打”的声音。然而,播放此音频会导致轻微的延迟,从而使游戏不太流畅。如果我删除声音,所有滞后都会消失。滞后仅在播放音频时出现,而不是在音频播放时出现。
音频设置: 首先我设置音频如下:
var soundFly = new Audio();
soundFly.src = "https://dl.dropbox.com/s/tj7mxg26egzo4zx/flap.wav?dl=0";
soundFly.preload = "auto";
Run Code Online (Sandbox Code Playgroud)
接下来,我在开始游戏时加载所有音频(单击按钮时):
function loadAudio()
{
soundFly.play().then(function () {
soundFly.pause()
}).catch(function (e) {
console.log("soundFly - " + e)
});
};
Run Code Online (Sandbox Code Playgroud)
然后,每次我触摸屏幕时,我都会播放声音:
this.soundFly.play().catch(function (e) {
console.log("soundFly - " + e)
})
Run Code Online (Sandbox Code Playgroud)
这很好用,但会出现微小的滞后。
渲染: 这就是我设置场景渲染的方式:
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);
}; …Run Code Online (Sandbox Code Playgroud)