我試圖讓鼠標事件在散點圖中的不同元素之間進行合作。 D3的brush
組件爲被調用的元素添加了一些偵聽器(例如svg.call(brush)
)。我還想顯示SVG上的點,就像散點圖一樣,以及支持mouseover
事件(用於工具提示和其他交互)的點。獲取點鼠標交互和畫筆一起工作
A previous solution在調用畫筆之前建議繪圖點,該畫筆支持鼠標懸停在點上,同時允許繪製畫筆並修改範圍。但是,如果筆刷的拖動動作是從一個點開始的(我預計這個點在非常密集的圖形中),則當某個程度段已經處於活動狀態時,畫筆組件會發生錯誤(轉而刷新畫筆的大小)。您可以在this example上試用,上述建議的解決方案已經實施。
我已經縮小問題的事件是如何在D3的brushstart()
功能,內部的d3.svg.brush
組件處理。以下是相關變量在筆刷正確工作時的樣子。
this eventTarget dragging resizing
-------------- ------------------------------------- ---------- ----------
Translating extent brush parent rect.extent true 0
Resizing extent brush parent rect (invisible rects for resizing) false e.g. "e"
Redrawing brush parent rect.background false 0
這是什麼樣子目前,與上述解決方案:
this eventTarget dragging resizing
-------------------- -------------- ------------- ---------- ----------------
Translating extent brush parent circle false circle.datum()
Resizing extent brush parent circle false circle.datum()
Redrawing brush parent circle false circle.datum()
真正的問題是:我怎麼能矇混d3.event.target相匹配的第一個表的來源是什麼?如果我能做到這一點,我可以得到我想要的行爲。謝謝你的幫助!
如果你錯過了,這裏是這個難題的行動bl.ock:http://bl.ocks.org/yelper/d38ddf461a0175ebd927946d15140947
在空刷的情況下正在啓動一個圓,你可能只是做這樣的事情:http://blockbuilder.org/larsenmtl/2862c433899f63456f5279e4a6281f5e,不能解決的舉動從一個圓圈開始。 – Mark