Bu yapılabilir
ancak use of the D3 brush API ile (aşağıdaki nota bakınız).
brush
eleman
- çevreler
mousedown
olaya tepki arkasında çevreler ise: Bu
bir örnektir http://bl.ocks.org/4747894 olduğunu. (Diğer olaylara da yanıt verebilir.)
brush
öğesi, sürükleme dairelerden birinin içinden başlasa bile iyi davranılır.
Bazı izleme ve D3 source code bir göz bir mousemove
olay fırça tepesinde bir circle
öğeden ateşlendiğinde extent
düzgün sıfırlanmaz Bu davranış göstermektedir. Yani circle
elemanları mousedown
dinleyici de fırça extent
sıfırlayarak sabitlenebilir:
circles.on("mousedown", function (d, i) {
// _svg_ is the node on which the brush has been created
// x is the x-scale, y is the y-scale
var xy = d3.mouse(svg.node()),
xInv = x.invert(xy[0]),
yInv = y.invert(xy[1]);
// Reset brush's extent
brush.extent([[xInv, yInv], [xInv, yInv]]);
// Do other stuff which we wanted to do in this listener
});
Not: fırça seçimi otomatik .extent(values)
çağırmayıAs per the API yenilenir edilmeyecektir. Sadece bir daireye tıklamak extent
'u sıfırlar, ancak yapılan seçimi yeniden çizmez. Seçim, yalnızca circle
içinde farklı bir seçim başlatıldığında veya çevrelerin ve geçerli seçimin dışına tıklandığında atılır. Bu, numaralı sorudan anladığım kadarıyla istenen davranış. Bununla birlikte, bu, fırçanın extent
'u ne olursa olsun, grafikte görünür seçim olacağı varsayımıyla yazılan kodu bozabilir.
Bu çok yakın. İdeal olarak, bir çember üzerinde başlansa bile, yaratıldıktan sonra fırçayı sürükleyebiliyorum, ama şimdi nasıl çalıştığına dair büyük bir adım! – RichH
Gerçekten de, bir seçimin '' içinden sürüklenmesinin hala mümkün olmadığını görüyorum. Temiz bir olayın yapılmasının d3 için bir yama içereceğini düşünmeme rağmen, bunu nasıl temizleyeceğimi düşüneceğim. –