js中的单节点bug
Single node bug in Arbor.JS
当创建一个带有单个节点的普通Arbor JS图时,节点到处抖动,并且不能添加其他节点。
另一个用户也在这里报告了这个问题:
https://github.com/samizdatco/arbor/issues/12非常感谢您的帮助修复/解决方法
这不是一个真正的修复,但我计算节点的数量,如果少于1,我设置摩擦为1.0
if (nodeCount == 1) {
//Stop single nodes bouncing all over the place
sys.parameters({ friction: '1.0' });
}
使用d3.js库代替Arbor已经解决了我的问题:-)
我们使用了一个变通的解决方案。它可能更像是一个hack而不是一个完整的解决方案,但它很容易实现并且在大多数情况下工作良好。
我们所做的是每次增加或减少一个粒子时,我们确定系统中粒子的数量。如果这个计数等于1,我们在系统中添加一个新粒子,其颜色设置为画布背景色。由于节点的颜色与其背景相同,所以它是不可见的。
所以在图中没有一个节点。每当由于添加或删除而发生这种情况时,我们都会添加这个隐藏的平衡节点。你可以看看我们的网站,看看上面的一个实例:http://www.graphthinker.com。当您添加节点时,您可能会看到,即使图形只有一个(可见的)节点,它也会继续响应。
这个隐藏的平衡节点可以在不再需要它的时候被删除,比如当另一个节点被添加时,或者当唯一可见的节点被删除时。
另一种选择是将physics.js
文件替换为此文件。它有几个修复程序来补偿使用单个节点的问题(包括添加第二个节点的问题)。
try this
if (nodeCount == 1) {
sys.parameters({ repulsion: 10, gravity: false, dt: 0.035 })
}
else if (nodeCount > 1 && nodeCount < 30) {
sys.parameters({ repulsion: 1000, gravity: false, dt: 0.35 })
}
else {
sys.parameters({ friction: .1, stiffness: 0.1, repulsion: 1, gravity: false, dt: 0.035 })
}
相关文章:
- 节点导出返回一个空对象
- 可以前端maven插件使用节点,npm已经安装
- 在jstree中,如何将指定的节点集中到大型树上
- 节点Js:How to catch a“;没有这样的文件或目录“;读取线模块出错
- 如何从模块链中调用函数.导出到节点中
- 节点是否需要模块传递带有方括号的arg?这是个错误吗
- d3基于用户选择动态更新节点
- 有条件更新d3.js力图中节点的最佳方法
- 如何处理node.js节点mongodb中的连接和查询队列
- 将DOM节点值与字符串Javascript进行比较
- 节点fs.stat名称未定义
- 无法安装节点sass相关性
- 节点协同与生成器和Promise并行流量控制
- 节点.js将变量显示为 HTML
- 将节点数据分配给另一个变量jstree
- 如何在动态创建的节点上绑定函数
- 承诺在非节点式回调上使用Bluebird
- 通过从节点父级获取所有子级对节点进行排序(获取子级数组)
- 茉莉花节点测试;t正在运行
- js中的单节点bug