1

从 d3 3.1 升级后。9至 3.1。10,我的 d3 svg 可视化上的动画坏了。我猜这与此提交(删除旧功能)有关,并且我使用的是旧 api。 https://github.com/mbostock/d3/commit/d9659b6794fa1985c756d2a7d8ee73174e54ee08

即使是最简单的过渡也会失败(将组元素向右移动 75 像素):

d3.select('g.slider').transition().duration(500).attr('transform','translate(100,0)');

我在其他元素上也有类似的过渡,它们将与上述过渡同时开始。是否存在过渡相互抵消的冲突,即使它们位于完全不同的元素上?我希望我只是以错误的方式使用(新的?)API?请注意,这一切都在 3.1.9 上运行良好。我试过按照 Mike 的这个指南(使用 d3.js 3 转换),但是 api 看起来一样,所以我被卡住了:http: //bost.ocks.org/mike/transition/

编辑:如果我是唯一遇到此问题的人,我会感到惊讶。从 3.1.9 迁移到 3.1.10 时,我多年来使用 d3 创建的所有带有动画的可视化都停止工作

4

2 回答 2

2

请使用GitHub 问题报告错误。

请创建一个完整的示例来展示您的意外行为,而不是引用上下文之外的代码片段。我无法重现您描述的行为。这是您的代码片段在完整示例中正常工作,http ://bl.ocks.org/mbostock/b4e46124258d1b75accb :

slider.transition()
    .duration(1000)
    .attr("transform", "translate(100,0)");

D3 有数千个测试和数百个示例,其中许多包括过渡和动画,并且没有一个受到此更改的影响。您的所有可视化是否都在 d3.timer 中使用了这个晦涩的、未记录的功能?我很惊讶此更改影响了您的代码,而且我绝对不希望它广泛传播。

如果您仍然遇到意外行为,请跟进 GitHub 问题,并可以提供更多详细信息供我调查。

于 2013-06-10T14:44:22.650 回答
0

对于在 d3 >= 3.1.10 中遇到转换问题的其他人,我正在加载date.js库,该库由于重载 Date.now() 方法而破坏了 d3.js。我建议不要使用 date.js,但这里有一个问题,旨在让 d3 做一些更优雅的事情,而不是默默地失败。请参阅此 d3 问题:https ://github.com/mbostock/d3/issues/1302

于 2013-06-10T21:41:43.623 回答