gpt4 book ai didi

javascript - D3 中的平滑递归转换

转载 作者:行者123 更新时间:2023-11-30 11:14:04 24 4
gpt4 key购买 nike

我创建了一个简单的过渡,它在结束时会自行调用。为什么它是生涩的,如何让它变得光滑? (jsfiddle here)

    var circle = svg.append('circle')
.attr("r",10)
.attr("cx",10)
.attr("cy",10)
.style("fill","red");

go()

function go() {
var c=svg.select("circle");
c
.transition()
.duration(1000)
.attr("cx",1*c.attr("cx")+10)
.on("end",go);

}

最佳答案

这是因为默认情况下过渡缓动函数不是线性的,而是easeCubic。将缓动函数设置为线性可以解决此问题:

    function go() {
var c=svg.select("circle");
c
.transition()
.ease(d3.easeLinear) // <-- THIS WAS ADDED
.duration(1000)
.attr("cx",1*c.attr("cx")+100)
.on("end",go);
}

来自d3-transition docs :

If an easing function is not specified, it defaults to d3.easeCubic.

为什么卡顿是因为在使用easeCubic时,对象开始缓慢移动并缓慢停止。您可以在此处可视化缓动效果:https://easings.net/#easeInOutCubic

FIXED DEMO (with linear easing)

关于javascript - D3 中的平滑递归转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52358566/

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