【问题标题】:Why is this D3 drag not working?为什么这个 D3 拖动不起作用?
【发布时间】:2014-05-26 17:09:09
【问题描述】:

我是 D3 的新手,刚开始玩它。我想通过拖放移动预先创建的矩形(或圆形)。这是我的fiddle。

// Create the SVG
var svg = d3.select("body").append("svg")
  .attr("width", 700)
  .attr("height", 400);

// Add a background
svg.append("rect")
  .attr("width", 700)
  .attr("height", 400)
  .style("stroke", "#999999")
  .style("fill", "#F6F6F6")

svg.append("circle")
.attr({ cx: 50, cy: 50, r: 5, fill: "red" })
.style("cursor", "pointer")
.call(drag);

svg.append("rect")
.attr({ x: 20, y: 20, width: 10, height: 10, fill: "blue" })
.style("cursor", "pointer")
.call(drag);

// Define drag beavior
var drag = d3.behavior.drag()
    .on("drag", dragmove);

function dragmove(d) {
  var x = d3.event.x;
  var y = d3.event.y;
  d3.select(this).attr("transform", "translate(" + x + "," + y + ")");
}

两个问题:

  1. 如何使拖动移动起作用?
  2. 为什么我的 rect 没有显示出来?

【问题讨论】:

    标签: d3.js drag


    【解决方案1】:

    http://jsfiddle.net/5hemY/1/

    快速调试让我发现drag 在您尝试.call() 时尚未定义

    【讨论】:

    • ...为了抢占您的下一个问题,您需要为拖动行为设置源访问器以避免跳转:jsfiddle.net/5hemY/2
    • @Lars 你的起源确实解决了最初的跳跃问题。但是,点会在随后的点击中跳跃。有没有快速解决办法?
    • 哎呀,看得很清楚,应该是翻译:jsfiddle.net/5hemY/3
    • 优秀的拉尔斯,我真的很想知道如何有效地做到这一点(即使我回答了这个问题!)
    • 在 d3 版本 4 中未提供原点如何解决跳转问题?
    猜你喜欢
    • 1970-01-01
    • 2015-11-14
    • 1970-01-01
    • 1970-01-01
    • 2012-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多