我正试图让一个圆圈可以拖动。
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 ] + ")"
})
})
以下是fiddle
它会在右侧红圈上的每次移动中抛出错误,但是为什么在第3,4和5行中d
未定义?
答案 0 :(得分:4)
工作小提琴: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
答案 1 :(得分:0)
更新:http://jsfiddle.net/6a6da/32/
将d
定义为var d = d3.event;
。
稍后,x和y在此处未定义:return "translate(" + [ x,y ] + ")"
。我不确定你想做什么。