我一直在挑选下面链接中的代码,但我无法到达任何地方。我只设法将事件处理程序重新分配给一个小 div 而不是整个页面。我不知道如何调整它以加载多个声音。
http://www.f1lt3r.com/w3caudio/web-audio-api/basic-examples/low-latency-playback-user-input.html
使用下面的代码示例,我根本无法通过单击 div 来触发声音。然而,这段代码看起来更好看,所以我真的很想修改它以用于学习目的。
var context = new webkitAudioContext(),
buffer;
var playAudioFile = function (buffer) {
var source = context.createBufferSource();
source.buffer = buffer;
source.connect(context.destination);
source.noteOn(0); // Play sound immediately
};
var loadAudioFile = (function (url) {
var request = new XMLHttpRequest();
request.open('get', 'A.mp3', true);
request.responseType = 'arraybuffer';
request.onload = function () {
context.decodeAudioData(request.response,
function(incomingBuffer) {
playAudioFile(incomingBuffer);
}
);
};
request.send();
}());
// I added this & it doesn't work
var divElement = document.getElementById("divElement");
divElement.addEventListener("click", playAudioFile , false);
// END of code I added
我了解如何创建振荡器并连接滤波器/增益和其他节点。到目前为止,这是我使用 API 时的参考点。XMLHttpRequest 处理与缓冲区创建相结合是令人困惑的。我了解缓冲区是什么,我了解 XMLHttprequest 是什么,但由于某种原因,加载音频文件以进行播放的过程对我来说似乎并不清晰,更不用说加载多个我最终想要做的事情了。我也尝试阅读 HTML-5 Rocks 教程,但如果没有可以调整的 C&P 代码,我永远无法判断我是否走在正确的轨道上。顺便说一句,我不想使用抽象库。我想从头开始学习 API。谢谢