这是我的刷子电话
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键关闭,它将画笔和缩放功能分开
答案 0 :(得分:2)
管理以解决这个问题,只需将brushstart包装在以下条件中:
if(!d3.event.sourceEvent.ctrlKey) //-if the ctrl key is not pressed
{
}
这基本上说如果ctrlKey没有继续运行:)
所以不要这样:
.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]);
});
}
})