2013-12-18 57 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亞歷山大! –