首页 > 解决方案 > D3画布强制定向布局底部问题

问题描述

我试图在布局中拖动时包含/绑定节点。我尝试修改示例Force Dragging III Canvas并添加以下代码:

function dragstarted() {
  if (!d3.event.active) simulation.alphaTarget(0.3).restart();
  d3.event.subject.fx = Math.max(10, Math.min(width - 10, d3.event.subject.x)) ;
  d3.event.subject.fy = Math.max(10, Math.min(width - 10, d3.event.subject.y)) ;
}

function dragged() {
  d3.event.subject.fx = Math.max(10, Math.min(width - 10, d3.event.x));
  d3.event.subject.fy = Math.max(10, Math.min(width - 10, d3.event.y));
}

虽然我能够将运动限制在顶部、左右方向,但底部拖动似乎有问题;到达矩形底部后它不会停止。请帮忙。

标签: d3.js

解决方案


我猜你只是因为使用widthx 轴和 y 轴的变量而犯了一个错误。height像这样使用 y 轴的变量应该没问题:

function dragstarted() {
  if (!d3.event.active) simulation.alphaTarget(0.3).restart();
  d3.event.subject.fx = Math.max(10, Math.min(width - 10, d3.event.subject.x)) ;
  d3.event.subject.fy = Math.max(10, Math.min(height - 10, d3.event.subject.y)) ;
}

function dragged() {
  d3.event.subject.fx = Math.max(10, Math.min(width - 10, d3.event.x));
  d3.event.subject.fy = Math.max(10, Math.min(height - 10, d3.event.y));
}

推荐阅读