gpt4 book ai didi

javascript - d3 强制布局在拖动时对齐网格

转载 作者:行者123 更新时间:2023-11-30 12:18:20 25 4
gpt4 key购买 nike

在 d3 中拖动完成后如何捕捉到网格?

我尝试向 dragend 事件添加一个事件监听器并对值进行四舍五入,但它似乎不起作用:

force.drag()
.on('dragend', function(d) {
d.fixed = false;
d.x = Math.round(d.x / 10) * 10;
d.y = Math.round(d.y / 10) * 10;
});

http://jsfiddle.net/zc89zj9e/

最佳答案

您的 jsfiddle 有两个问题。首先,节点一旦被拖动就变得不可拖动——这是因为您在 dragend 上设置了 d.fixed = true。这可以防止任何进一步的位置变化。解决方案是在 dragstart 上设置 d.fixed = false

其次,除了d.xd.y,还需要设置d.pxd.py >(强制布局在内部使用)使位置更改生效。

function dragstarted(d) {
// ...
d.fixed = false;
}

function dragended(d) {
d.fixed = true;
d.x = d.px = Math.round(d.x / 100) * 100;
d.y = d.py = Math.round(d.y / 100) * 100;
}

完整演示 here .

关于javascript - d3 强制布局在拖动时对齐网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31778147/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com