5

我正在尝试使圆圈可拖动。

var drag = d3.behavior.drag();
  drag.on("drag", function(d,i) {
      console.log(d);
      d.x += d3.event.dx;
      d.y += d3.event.dy;
      //This will change the center coordinates by the delta
      d3.select(this).attr("x", d.x).attr("y", d.y);
      //This should change the upper left x and y values by the delta
      d3.select(this).attr("transform", function(d,i){
          return "translate(" + [ x,y ] + ")"
      })
  })

这是小提琴

d它在右侧红色圆圈上的每一步都会引发错误,但是为什么在第 3、4 和 5 行中说未定义呢?

4

2 回答 2

5

工作小提琴:http: //jsfiddle.net/6a6da/33/

参数通常d,i会引用绑定数据,但您没有绑定任何数据。在您的情况下,仅使用事件就足够了。

drag.on("drag", function() {
  d3.select(this).attr("cx", +d3.select(this).attr("cx") + d3.event.dx);
  d3.select(this).attr("cy", +d3.select(this).attr("cy") + d3.event.dy);
})l
于 2013-06-21T21:40:56.577 回答
0

更新:http: //jsfiddle.net/6a6da/32/

定义dvar d = d3.event;

不过,稍后 x 和 y 在这里未定义:return "translate(" + [ x,y ] + ")". 我不确定你想在那里做什么。

于 2013-06-21T21:35:01.390 回答