【发布时间】:2020-07-03 19:38:30
【问题描述】:
我正在尝试将一些平移效果集成到一个小型测试应用程序中的一些声音中。它工作正常,除了一个重要问题:每个声音只播放一次!
我尝试了几种方法来试图绕过该问题,但均未成功。问题是,我无法确定问题出在哪里。这是我的代码,下面有一点解释。
const audio = new Audio('audio/background.mp3');
const footstep = new Audio('audio/footstep1.mp3');
const bumpWall1 = new Audio(`audio/bump-wall1.mp3`);
const bumpWall2 = new Audio(`audio/bump-wall2.mp3`);
const bumpWall3 = new Audio(`audio/bump-wall3.mp3`);
const bumpWall4 = new Audio(`audio/bump-wall4.mp3`);
const bumpWallArray = [bumpWall1, bumpWall2, bumpWall3, bumpWall4];
audio.volume = 0.5;
function play(sound, dir) {
let audioContext = new AudioContext();
let pre = document.querySelector('pre');
let myScript = document.querySelector('script');
let source = audioContext.createMediaElementSource(sound);
let panNode = audioContext.createStereoPanner();
source.connect(panNode);
panNode.connect(audioContext.destination);
if (dir === "left") {
panNode.pan.value = -0.8
} else if (dir === "right") {
panNode.pan.value = 0.8;
} else {
panNode.pan.value = 0;
}
sound.play();
}
所以基本上,当您调用 play() 函数时,它会在左侧、右侧或中间播放声音。但是每个声音只播放一次。例如,如果脚步声播放过一次,如果我对其调用 play() 函数,它就再也不会播放了。
谁能帮我解决这个问题?
【问题讨论】:
-
有什么会阻止您使用 AudioBuffers?对于您正在做的事情,这听起来更自然。
-
我不确定。我昨天才知道这个,所以显然有很多我不知道的。 AudioBuffers 能解决问题吗?我将研究 AudioBuffers 比。谢谢!
标签: javascript audio web-audio-api