2013-12-18 103 views
1

恰好一个月前,我遇到了这个问题Closure call with mismatched arguments: function 'call'与js互操作。关闭调用不匹配的参数:函数再次调用

现在我有与SnapSVG库相同的问题。从那以后我就将它与JsInterop结合使用。今天,我试图使用mouseover函数,我得到了同样的例外。

但是,当我将鼠标悬停在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"); 
}); 

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

回答

1

考虑到您粘贴的日志,mouseover处理程序似乎有时会被调用,参数有时不带。要处理该问题,您可以使用具有可选参数的功能:

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

上述回调函数现在可以处理具有0到4个参数的调用。

+0

该死的......它的诡计......这很奇怪......谢谢你agin亚历山大! –