0

所以我在 Chrome 中遇到了一个可怕的非法调用错误。我正在使用 Web Audio API(顺便说一句,HTML5 很棒)来构建音频效果和信号路由的框架。基本上,它会根据节点在数组中的位置自动路由节点。但是我为复杂的效果或模块包含了我自己的类/对象。它们内部有多个节点,并且可以指定去哪里,就好像它是单个输入/输出节点一样。

无论如何,当创建对象时,它会在节点创建点(模块中的私有节点)引发错误。我已经读过很多关于控制台发生的事情,或者失去了固有的“这个”。但是我不知道为什么会发生在这里,因为获取节点构造函数的变量是全局变量。有任何想法吗?

var context, nodes;

var Delay = function(_context, _time, _feedback, _wet) {
   this.type = "Delay";

   this.delay = new context.createDelayNode(); //Console points error here.
   this.feedback = new context.createGainNode();
   this.crossfade = new context.createGain();        
}

function GotStream(stream) {
   context = new AudioContext();
   nodes = [ new Delay(1,1,1) ]; //Start point of error
   ...
}

显然它被剥离了一点,但那是函数/变量的精确嵌套。我应该注意我已经尝试添加.call(window), 和.bind(window)节点构造函数,但没有运气

4

0 回答 0