【问题标题】:Make a fixed node in d3.js un-fixed使 d3.js 中的固定节点不固定
【发布时间】:2013-12-16 23:02:30
【问题描述】:

我怎样才能使 d3.js 强制布局节点已经固定:true 变得不固定?

如果我将它们设置为 d.fixed=false 这不起作用。

我的代码类似于http://bl.ocks.org/norrs/2883411 工作。 所以它在拖动时设置 d.fixed=true。

将 d.fixed 评估为布尔值似乎也不起作用。

但我也希望能够解开节点。

通过拖动或通过其他功能。

我正在尝试这个:

if (d.fixed==false) {
        d.fixed=true;
        d3.select(this).classed("fixed", true);
}
else
{
        d.fixed = false;
        d3.select(this).classed("fixed", false);
}

在这个小提琴上可以看到不好的结果:http://jsfiddle.net/2u5KB/2/

谢谢, 加雷斯。

【问题讨论】:

  • fixed 设置为false 应该可以工作。您能否发布一个完整的示例来说明问题?
  • 更改节点属性后尝试调用 force.resume()。
  • 其实你可能需要打电话给force.start()
  • 我只是尝试了一个测试,不需要调用 resume 或开始 unfix 一个节点。小提琴:jsfiddle.net/2u5KB/1(参见 dragend 函数)。将节点的 fixed 属性设置为 false 就足够了。
  • 感谢 cmets,我已经更新了我的问题,举例说明我出了什么问题。

标签: d3.js force-layout


【解决方案1】:

好的,我解决了我的问题。

我在 dragstart 方法中对 d.fixed 进行检查和更改。

将代码移至 dragend 方法解决了问题。

我猜 dragstart 有一些我预期的不同行为

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多