在SO上有一些类似的问题,但似乎语法都已弃用。
我正在尝试从我的DropBox(公共链接)加载声音并在我的应用启动时播放它。
这是我的代码:
var context = new webkitAudioContext();
function start() {
// Note: this will load asynchronously
var request = new XMLHttpRequest();
request.open("GET", "https://dl.dropboxusercontent.com/u/86304379/Pt.%205%20Flood%20the%20Soul.wav", true);
request.responseType = "arraybuffer"; // Read as binary data
// Asynchronous callback
request.onload = function() {
var data = request.response;
audioRouting(data);
};
request.send();
}
function audioRouting(data) {
source = context.createBufferSource(); // Create sound source
buffer = context.createBuffer(data, true/* make mono */); // Create source buffer from raw binary
source.buffer = buffer; // Add buffered data to object
source.connect(context.destination); // Connect sound source to output
playSound(source); // Pass the object to the play function
}
// Tell the Source when to play
function playSound() {
source.noteOn(context.currentTime); // play the source immediately
}
唉 - 我在我的一个函数中调用了playSound(),我得到了
“无法调用方法'noteOn'未定义”
这是因为noteOn已被弃用吗?或者是其他不妥之处。我只想将一些音频加载到音频节点并播放它 - 我没有在网上找到任何足够的代码来显示如何执行此操作。
答案 0 :(得分:3)
你是对的,noteOn
功能确实消失了,现在它是start
:
user: crogers
date: Tue Sep 25 12:56:14 2012 -0700
summary: noteOn/noteOff changed to start/stop -- added deprecation notes
API与文档一样好 - AudioBufferSourceNode部分是您想要的。
Here's我如何做的一个例子(原谅CoffeeScript)。
答案 1 :(得分:0)
以上是正确的,不推荐使用noteOn。但是因为我们无法确定用户是否会访问仅支持已弃用的呼叫的旧浏览器或仅支持新呼叫的新浏览器,SoundJS通过映射呼叫来设置两者的兼容性。如果您有兴趣,请查看WebAudioPlugin._compatibilitySetUp。