2012-09-23 42 views
3

我已經用Raphael JS寫了一個繪圖小部件。數據從數據庫中獲取並繪製在畫布上。當我試圖爲數據點創建工具提示時,就出現了這個問題。工具提示消失,但在淡出時會出現錯誤。有時它會淡出,有時它不會(當鼠標快速移動時,它似乎不會消失)。應該注意的是,當鼠標懸停在數據點上時,數據點會增長。任何改進我的代碼的幫助都會有所幫助。謝謝。下面的代碼:Raphael Hover Bug?

circle2[<?php echo $i?>].hover(function() { 
circle2[<?php echo $i?>].attr({"stroke": "#000"}); 
circle2[<?php echo $i?>].attr({"r": "8"}); 
rect.toFront(); 
text.toFront(); 
rect.attr({"x":30+50*<?php echo $i ?>,"y":220-250*<?php echo $time_value[$i]/100000;?>}); 
text.attr({"text":"<?php echo $date[$i]?>\nValue: $<?php echo $time_value[$i]?>\nInvested: $<?php echo $time_value[$i]?>","y":250-250*<?php echo $time_value[$i]/100000;?>,"x":33+50*<?php echo $i ?>}); 
rect.animate({"opacity":0.8},500); 
text.animate({"opacity":1.0},500); 
}, 
    function() { 
     rect.attr({"opacity":0}); 
     text.attr({"opacity":0}); 
     circle2[<?php echo $i?>].attr({"stroke": "none"}); 
     circle2[<?php echo $i?>].attr({"r": "5"}); 
    } 
); 

回答

2

這裏的問題(95%的把握):如果有出現快速懸停,並懸停的持續時間小於你的懸停啓動動畫的持續時間(500毫秒在這種情況下) ,懸停功能會在動畫結束前將元素不透明度設置爲0,並分別將背景和文本的不透明度設置爲0.8和1.0。

解決方法是在懸停週期結束時停止正在進行的動畫。你應該能夠更新你的懸停處理程序如下:

... 
function() { 
    rect.stop().attr({"opacity":0}); 
    text.stop().attr({"opacity":0}); 
    circle2[<?php echo $i?>].attr({"stroke": "none"}); 
    circle2[<?php echo $i?>].attr({"r": "5"}); 
} 
+0

修復它像一個魅力。謝謝。 – ggobieski