我正在处理一段创建AudioContext的代码补丁,然后想要创建WebAudio API。具体来说,它
function(...) {
var AudioContext = AudioContext || webkitAudioContext;
return {
/* ... */
init: function() {
var self = this;
this.ac = new AudioContext();
/* createJavaScriptNode is deprecated, doesn't exist anymore in newer Chromium, */
/* must use createScriptProcessor there. */
this.anode = this.ac.createJavaScriptNode(this.bufferSize, this.inputChannels,
this.outputChannels);
/* ... */
},
/* ... */
};
/* ... */
};
我们的想法是支持那些实现已弃用的API的浏览器,但不支持新的API。
在AudioContext
和webkitAudioContext
之间选择不是问题所在,因为它们都是构造函数。
我知道我不能使用相同的成语在createJavaScriptNode
和createScriptProcessor
之间进行选择,因为他们都是这两种方法。
如果没有太多代码膨胀,即如何创建另一个局部变量并使用bind()搞乱,我怎么能做到最好呢?
我在考虑:
this.anode = (this.ac.createJavaScriptNode || this.ac.createScriptProcessor)(this.bufferSize, this.inputChannels,
this.outputChannels);
我还没有尝试过,因为我担心这种调用方法的方式可能会失去上下文。 有什么想法或建议吗?
答案 0 :(得分:0)
使用Chris Wilson的猴子补丁:https://github.com/cwilso/AudioContext-MonkeyPatch
这应该照顾大多数(所有?)案例。