使用d3.js拖动并在线与线之间建立连接

时间:2016-04-01 11:30:36

标签: javascript d3.js

我是d3.js.的新手。我创建了三个圆圈。我想要圆圈应该拖放。我们也可以使用线创建圆圈之间的连接。这是我的代码:

var spaceCircles = [30, 70, 110];

 var svgContainer = d3.select("body").append("svg")
                                     .attr("width", 200)
                                     .attr("height", 200);

 var circles = svgContainer.selectAll("circle")
                           .data(spaceCircles)
                           .enter()
                          .append("circle");

var circleAttributes = circles
                       .attr("cx", function (d) { return d; })
                       .attr("cy", function (d) { return d; })
                       .attr("r", 20 )
                       .style("fill", function(d) {
                         var returnColor;
                         if (d === 30) { returnColor = "green";
                         } else if (d === 70) { returnColor = "purple";
                        } else if (d === 110) { returnColor = "red"; }
                         return returnColor;
                       });

1 个答案:

答案 0 :(得分:1)

为了实现这一点,您必须首先附加一个mousedown()函数

circles.on('mousedown', function(d) {
    //detect if mouse is on a circle i.e if(d.type === "circle")
})

然后执行拖动操作的mousemove()函数。最后是mouseup()函数,您可以在其中添加相关节点之间的链接。

选中此示例:http://bl.ocks.org/rkirsling/5001347