【发布时间】:2014-05-12 22:48:53
【问题描述】:
以下代码的目标是确保每次触发事件侦听器时,声音都会在 2 秒后播放。就目前而言,这仅在第一次触发事件时有效。所有后续的 mousedown 事件都会立即播放文件。我正在寻找有关如何解决此问题的提示。
var audioContext = new webkitAudioContext;
function AudioObj(fileDirectory) {
var soundObj = {};
soundObj.fileDirectory = fileDirectory;
var getSound = new XMLHttpRequest();
getSound.open("GET", soundObj.fileDirectory, true);
getSound.responseType = "arraybuffer";
getSound.onload = function() {
audioContext.decodeAudioData(getSound.response, function(buffer) {
soundObj.soundToPlay = buffer;
});
}
getSound.send();
soundObj.play = function(time) {
var playSound = audioContext.createBufferSource();
playSound.buffer = soundObj.soundToPlay;
playSound.connect(audioContext.destination);
playSound.start(time );
}
return soundObj;
}
var snare = AudioObj("snare.mp3");
window.addEventListener("mousedown", go);
function go(){
snare.play(2)
}
【问题讨论】: