そのため、Chrome で恐ろしい Illegal Invocation エラーが発生しました。オーディオ効果と信号ルーティングのフレームワークを構築するために、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)
運がないノードコンストラクター