如果我有键控,如何停止调用 d3.brush ?D3/js.

How to stop calling d3.brush if I have keydown ? d3/js

本文关键字:brush d3 D3 js 调用 何停止 如果      更新时间:2023-09-26

这是我的刷子调用

brush.call(d3.svg.brush() //-calling the brush
        .x(d3.scale.identity().domain([0, width]))
        .y(d3.scale.identity().domain([0, height]))
        .on("brushstart", function(d) {
        d3.selectAll(".selectedNode text")
        .attr("class", "hidden")
        ;
          nodes.each(function(d) { d.previouslySelected = shiftKey && d.selected; });
        })
        .on("brush", function() {
         //console.log(d3.event.sourceEvent.ctrlKey + "ctrl key");
          nodes.classed("selectedNode", function(d) {
            return d.selected = d.previouslySelected ^
                (extent[0][0] <= d.x && d.x < extent[1][0]
                && extent[0][1] <= d.y && d.y < extent[1][1]);
          });
        })
        .on("brushend", function() {
          d3.event.target.clear();
          d3.select(this).call(d3.event.target);
        }));

如果我有,比如说,按住 ctrl 键,我如何停止在拖动时调用它?因此,如果 ctrl 键向下,我可以调用缩放函数,这将画笔和缩放函数分开

设法弄清楚了这一点,只需将刷子开始包装在一个条件下:

if(!d3.event.sourceEvent.ctrlKey) //-if the ctrl key is not pressed
        { 
}

这基本上是说如果ctrl键没有向下继续:)

所以取而代之的是:

.on("brush", function() {
         //console.log(d3.event.sourceEvent.ctrlKey + "ctrl key");
          nodes.classed("selectedNode", function(d) {
            return d.selected = d.previouslySelected ^
                (extent[0][0] <= d.x && d.x < extent[1][0]
                && extent[0][1] <= d.y && d.y < extent[1][1]);
          });
        })

你会有这个:

.on("brush", function() {
         //console.log(d3.event.sourceEvent.ctrlKey + "ctrl key");
if(!d3.event.sourceEvent.ctrlKey) //-if the ctrl key is not pressed
            { 
          nodes.classed("selectedNode", function(d) {
            return d.selected = d.previouslySelected ^
                (extent[0][0] <= d.x && d.x < extent[1][0]
                && extent[0][1] <= d.y && d.y < extent[1][1]);
          });
}
        })