使用dart:web_audio

bbs*_*bbs 3 dart

我有一些困惑调试一些使用Web Audio API的简单应用程序.

在开发者控制台中,我可以这样做:

var ctx = new webkitAudioContext(),
osc = ctx.createOscillator();

osc.connect(ctx.destination);
osc.start(0);
Run Code Online (Sandbox Code Playgroud)

当我尝试使用Dart时尝试使用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'
Run Code Online (Sandbox Code Playgroud)

单步调试我发现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."
Run Code Online (Sandbox Code Playgroud)

这是我无法弄清楚该怎么做的地方,我认为这个论点不是null,它是1.

谷歌搜索错误只会让我看到实际的Dart源代码.

有没有解释如何使用飞镖的地方:web_audio?我究竟做错了什么?

Mar*_*ioP 5

这是因为底层实现似乎需要参数input,尽管它是一个可选参数.此代码将起作用:

AudioContext ctx = new AudioContext();
OscillatorNode osc = ctx.createOscillator();

osc.connect(ctx.destination, 0, 0);
osc.start(0);
Run Code Online (Sandbox Code Playgroud)

这是一个已知错误,您可以在此处加注星标:https://code.google.com/p/dart/issues/detail?id = 6788