我在调试一些使用 Web Audio API 的简单应用程序时有些困惑。
在开发人员控制台中,我可以执行以下操作:
var ctx = new webkitAudioContext(),
osc = ctx.createOscillator();
osc.connect(ctx.destination);
osc.start(0);
当我这样尝试时,试图让它与 Dart 一起使用会产生以下错误:
AudioContext ctx = new AudioContext();
OscillatorNode osc = ctx.createOscillator();
osc.connect(ctx.destination);
osc.start(0);
//Dart2JS: Uncaught TypeError: Object #<OscillatorNode> has no method 'connect$1'
//DartVM: Class 'OscillatorNode' has no instance method 'connect' with matching
arguments. NoSuchMethodError: incorrect number of arguments passed to method
named connect' Receiver: Instance of 'OscillatorNode'
单步执行我发现connect方法有两种实现方式。所以我尝试添加一个额外的第二个参数,因为我无法真正理解为什么它需要一个名为“输出”的 int,我想也许是为了音量,我决定了值 1 但这会产生:
//Dart2JS: Uncaught Error: IndexSizeError: DOM Exception 1 flexsynth.html_bootstrap.dart.js:8698 $.main flexsynth.html_bootstrap.dart.js:8698 $$._IsolateContext.eval$1flexsynth.html_bootstrap.dart.js:565 $.startRootIsolate flexsynth.html_bootstrap.dart.js:7181 (anonymous function)
//DartVM: "Dart_IntegerToInt64 expects argument 'integer' to be non-null."
这是我无法弄清楚该怎么做的地方,我认为参数不是空的,它是 1。
谷歌搜索错误只会让我找到实际的 Dart 源代码。
有什么地方可以解释如何使用 dart:web_audio 吗?我究竟做错了什么?