作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在使用 D3.js 渲染大约 500 个节点和它们之间的链接。布局稳定下来(迭代收敛)通常需要 10 秒。
如何加快整个过程,例如,节点在动画期间移动速度快 2 倍。则时间将是 50%(用于迭代的 CPU 时间应该远少于 10 秒,但如何减少动画时间)。
我试过:
有什么建议吗?谢谢。
最佳答案
查看 this thread其中有很多与此主题相关的有用信息。
您可能会尝试实现该线程的一个建议是在单个 requestAnimationFrame
回调中多次调用 force.tick()
,然后更新节点和链接位置,然后循环直到 force.alpha
达到 0(或任何您想要的 alpha 阈值)。尝试这样的事情:
var ticksPerRender = 3;
requestAnimationFrame(function render() {
for (var i = 0; i < ticksPerRender; i++) {
force.tick();
}
// UPDATE NODE AND LINK POSITIONS HERE
if (force.alpha() > 0) {
requestAnimationFrame(render);
}
});
这将每 3 个刻度或 3 倍速度渲染一次。根据需要调整 ticksPerRender
值。
HERE是一个简单的演示。在本例中,我使用了 force.on('start', callback)
来调用上述呈现逻辑。这意味着它会在开始拖动交互时自动再次调用。
关于javascript - 如何在 d3.js 中加速力布局动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26188266/
我是一名优秀的程序员,十分优秀!