两个“调用”以拖动 d3 中的事件
Two 'calls' to drag events in d3
我在 d3 中使用了强制导向布局,我在开发中遇到了一些障碍。
var circle = svg.append("svg:g").selectAll("circle")
.data(force.nodes())
.enter().append("svg:circle")
.attr("r", function( d ) {
return d.fValue;
})
.style('fill', function( d ) {
return strokeColor( d.name );
})
.call(force.drag);
基本上,我想向 force.drag 定义的"拖动"行为添加更多事件侦听器 - 也就是说,我想确保节点在拖动时(而不是鼠标悬停时)改变颜色。 我能想到的唯一两种方法是以某种方式更改 force.drag 函数或定义新的拖动行为。
我不知道如何以第一种方法执行此操作,但是当我尝试第二种方式时,方法链接将仅采用第二个拖动事件,而忽略第一个force.drag事件。
.call(customDrag)
.call(force.drag); // This would work
如何附加另一个拖动事件侦听器或修改现有 force.drag,以适应我要添加的新动画?
提前致谢
定义自己的侦听器,因为force.drag
只调用 afaik force.tick()
:
var node_drag = d3.behavior.drag()
.on("dragstart", dragstart)
.on("drag", dragmove)
.on("dragend", dragend);
vis.selectAll("g.node").call(node_drag)
然后,请确保您在dragmove
中拨打tick()
。
我这样做是为了添加带有强制布局的拖放支持。查看我的 StackOverflow 问题和答案以获取示例
相关文章:
- 在D3.js中,有没有任何方法可以将x和y方向上的滚动事件绑定到平移svg
- 在D3中组合多个事件
- d3-js快速事件调用问题
- 如何在d3.js中自定义事件侦听器
- D3.js:如何在svg上移动鼠标时创建弹出事件
- d3.js条形图未根据单击事件进行更新
- 当鼠标也在触摸另一个元素时,d3.js鼠标悬停事件未被触发
- 是否有类似强制布局但支持单击事件的 D3 布局引擎
- 鼠标悬停事件不会触发以触发 D3 中的单击事件
- Babel中的d3事件回调上下文更改
- 在隐藏的 svg 元素上触发的 D3 事件
- 节点上的 d3 事件处理程序不在 HTML DOM 中
- 如何在d3事件绑定时访问原始事件对象
- 如何从外部触发d3事件
- 在“点击”时将参数传递给d3事件回调
- 如何正确地使D3事件监听器
- 进口d3.事件转换为使用rollup的自定义构建
- d3事件的Onclick应该将值存储在文本框中
- d3.事件是什么?dx的回报
- 绑定d3事件