1

就在一个月前,我遇到了这个问题Closure call with mismatched arguments: function 'call' with js interop。

现在我对SnapSVG库也有同样的问题。从那一刻起,我就将它与 JsInterop 结合使用。今天我尝试使用鼠标悬停功能,我得到了同样的例外。

但是当我悬停 SVG 元素时,我的函数被触发了四次:

hover in
hover in
hover in
hover in 
Breaking on exception: Closure call with mismatched arguments: function 'call'

我试过了 :

var img = s.image("$url", x, y, image.width/2, image.height/2); 
js.FunctionProxy hover = new js.FunctionProxy(() {
  print("hover in");
});

img.mouseover(hover);

var img = s.image("$url", x, y, image.width/2, image.height/2);
img.mouseover(() {
  print("hover in");
});

这次我检查了两次,回调函数没有额外的参数。

4

1 回答 1

1

考虑到您粘贴的日志,鼠标悬停处理程序似乎有时会使用参数调用,有时有时没有。要处理这个问题,您可以使用带有可选参数的函数:

var img = s.image("$url", x, y, image.width/2, image.height/2);
img.mouseover(([p1, p2, p3, p4]) {
  print("hover in");
});

上面的回调现在处理带有 0 到 4 个参数的调用。

于 2013-12-19T08:16:52.230 回答