要素にすばやくマウスを合わせると、最終結果は予測できなくなります。
この問題を防ぐために D3 でトランジションをレイヤー化する方法はありますか?それとも、要素を遠くに配置するなどの対処が必要ですか?
また、要素を継続的に移動すると正しい状態に更新されるようにmousemoveを使用してみましたが、移動すると要素が大きくなり(静的な数値に設定されていても)、ちらつきも多くあります。
これが私の対話のすべてです。これは、円に配置された楕円の集まりであり、テキスト ラベルとパスが互いに接続されています。(D3 のバンドル レイアウト)。マウスオーバーすると、マウスオーバーしたものと関連する接続されたノードとパスのみが表示されます。ただし、楕円から楕円に非常に速く移動すると、楕円のサイズが変化しますが、パスは予測できなくなります。意図的に楕円の外にマウスを出し、リスナーのいない領域から戻す必要があります。
nodeGroup.on("mouseenter",function(){
//hides ALL circles
svg.selectAll("ellipse")
.style("opacity","0");
//reshow the one you mouse over
d3.select(this).select("ellipse")
.style("opacity","1")
.transition()
.attr("rx", magnifiedCircle)
.attr("ry", magnifiedCircle/2);
//make text bigger
d3.select(this).select("text")
//.transition()
.style("font-size","25");
//remove all paths (draw relevant ones below)
d3.selectAll("path")
.style("opacity",0);
//name of selected node
var thisID = (d3.select(this).attr("id"));
//draw alls path related to selected node
nodeGroup.selectAll("path")
.style("opacity", function(d,i){
if(d[0] == thisID){
//draw related circles
svg.selectAll("#Circle_" + trimWhitespace(d[1]))
.style("opacity", 1);
svg.select("#Circle_" + trimWhitespace(d[0]))
.style("opacity", 1);
return 1;
}
else
return 0;
});