2013-03-19 102 views
0

我正在学习D3拖动,而我在这里卡在这里d3.event.dx。当我在控制台输出这个值时,它会返回一些int值,因为我拖动了这个点,我不知道这个返回值遵循了什么样的模式。谁能解释一下?d3.event.dx返回什么?

vis.selectAll("circle.control") 
    .data(function(d) { return points.slice(0, d) }) // array contains 2 3 ... 5 points respectively 
    .enter().append("circle") 
    .attr("class", "control") 
    .attr("r", 7) 
    .attr("cx", x) 
    .attr("cy", y) 
    .call(d3.behavior.drag() 
     .on("dragstart", function(d) { 
     this.__origin__ = [d.x, d.y]; 
     //alert(this.__origin__); 
     }) 
     .on("drag", function(d) { 
     d.x = Math.min(w, Math.max(0, this.__origin__[0] += d3.event.dx)); 
     //alert(this.__origin__[0]); 
     //alert(d3.event.dx); 
     console.log(d3.event.dx); 
     // console.log (d.x); 

     d.y = Math.min(h, Math.max(0, this.__origin__[1] += d3.event.dy)); 

     //alert(this.__origin__[1]); 
     bezier = {}; 
     update(); 
     vis.selectAll("circle.control") 
      .attr("cx", x) 
      .attr("cy", y); 
     }) 
     .on("dragend", function() { 
     delete this.__origin__; 
     })); 

回答

1

dx事件对象的成员将是一些坐标,但可能不是对您有意义的东西。 d3.eventDOM event,因此包含的信息可能不会反映出您在可视化中所做的操作。

您可以使用d3提供的其他方法获取更有意义的信息,例如, d3.mouse()获取相对于容器的坐标。 documentation中的更多信息。

+0

怎么样?DX – Jolin 2013-03-19 12:29:06

+0

对不起,我的意思是'dx'。我会更新答案。 – 2013-03-19 13:42:00