我拖动一个点时更新图形

时间:2013-07-21 19:02:08

标签: d3.js

我正在使用d3制作一系列最适合的应用程序,其中我希望在我拖动点周围时更新最适合的行。我得到了它的工作,所以当你的拖动结束时,行自行更新。但是,当涉及到实际更新时,我无法这样做。

这是我的拖动功能:

 var move =  d3.behavior.drag()
                .on("drag",drag)
                .on("dragend",function(){
                    dict.length = 0;
                    var dragPoint = d3.select(this);
                    var newX = x_scale2(parseInt(dragPoint.attr("cx")));
                    var newY = y_scale2(parseInt(dragPoint.attr("cy")));

                    model.replace_point(dragPoint.attr("id"),newX,newY);
                    updateDisplay();


            });

  function drag(){
      var dragPoint = d3.select(this);
      dragPoint
    .attr("cx",function(){return d3.event.dx + parseInt(dragPoint.attr("cx"));})
    .attr("cy",function(){return d3.event.dy +parseInt(dragPoint.attr("cy"));})
        }

**对于如何实现我的目标的任何帮助将不胜感激**

1 个答案:

答案 0 :(得分:1)

您可以在拖动功能中包含'更新代码' 每次触发拖动事件时,该行都将更新。这意味着每次点的位置都会发生变化。

var move = d3.behavior.drag()
    .on("drag", drag);

function drag() {
    var dragPoint = d3.select(this);
    dragPoint
        .attr("cx", d3.event.dx + parseInt(dragPoint.attr("cx")))
        .attr("cy", d3.event.dy + parseInt(dragPoint.attr("cy")));
    var newX = x_scale2(parseInt(dragPoint.attr("cx")));
    var newY = y_scale2(parseInt(dragPoint.attr("cy")));
    model.replace_point(dragPoint.attr("id"), newX, newY);
    updateDisplay();
}