我在D3中制作了力导向图。
我能够在节点上拖动一个框并将其属性更改为“已选择”。
我现在要做的是立即移动所有这些选定的节点。这是我的拖动功能'
function dragstart(d, i)
{
force.stop(); //-stop the force layout as soon as you move nodes
}
function dragmove(d, i) //-change coordinates of nodes and lines ???
{
d.px += d3.event.dx;
d.py += d3.event.dy;
d.x += d3.event.dx;
d.y += d3.event.dy;
tick();
}
function dragend(d, i) //-when you stop dragging the node
{
d.fixed = true; //-D3 giving the node a fixed attribute
d3.select(this).classed("fixed", true); //-changing nodes CSS class
tick(); //-update positions
}
如何应用此选项以便我一次移动所有选定的节点?
答案 0 :(得分:0)
我假设你的意思是你改变了节点的类别以便选择'而不是他们的属性。我是D3js的初学者,但这就是我认为应该发生的事情:
d3.behaviour.drag()
.on("dragstart", function() {
d3.selectAll('.selected').each(dragstart(d,i))
})
.on("drag", function() {
d3.selectAll('.selected').each(dragmove(d,i))
})
.on("dragend", function() {
d3.selectAll('.selected').each(dragend(d,i))
})
根据您的功能tick()
的不同,这可能对您有用。