gpt4 book ai didi

javascript - D3.js 链式过渡,用于不同形状的复合动画

转载 作者:可可西里 更新时间:2023-11-01 02:31:53 25 4
gpt4 key购买 nike

我想做什么...

我正在使用 D3 制作复合动画。我有以下最终状态:

enter image description here

本质上我想要连接点的动画 - 添加第一个。然后将线画到第二个圆圈。绘制线后,添加第二个圆圈。

为了增加一些视觉吸引力,我执行了其他转换,例如在绘制线条时更改第一个和第二个圆的 circle 半径。

我试过的...

我可以单独添加圆圈和绘制线条,包括动画。但是,我不确定如何继续将过渡链接在一起以形成复合动画。

我已经 read about transitions/animations ,建议使用 each("end")。虽然这可以用来绘制初始对象,但直到其他转换之后才会触发结束。

问题

  • 使用 each("end", ...) 是否是链接转换的正确方法?
  • 如何开始另一个动画(即开始画线),同时仍然允许另一个过渡完成(即第一个圆半径爆发)。

最佳答案

从 d3.v3 开始,无需使用“end”就可以更轻松地链接转换。见注释here .

例如,看this one :

rect.transition()
.duration(500)
.delay(function(d, i) { return i * 10; })
.attr("x", function(d, i, j) { return x(d.x) + x.rangeBand() / n * j; })
.attr("width", x.rangeBand() / n)
.transition()
.attr("y", function(d) { return y(d.y); })
.attr("height", function(d) { return height - y(d.y); });

这是针对同一元素的过渡。对于不同的元素,请查看 this one .

// First transition the line & label to the new city.
var t0 = svg.transition().duration(750);
t0.selectAll(".line").attr("d", line);
t0.selectAll(".label").attr("transform", transform).text(city);

// Then transition the y-axis.
y.domain(d3.extent(data, function(d) { return d[city]; }));
var t1 = t0.transition();
t1.selectAll(".line").attr("d", line);
t1.selectAll(".label").attr("transform", transform);
t1.selectAll(".y.axis").call(yAxis);

过渡附加到 svg 元素并从那里链接。

关于javascript - D3.js 链式过渡,用于不同形状的复合动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15794619/

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