javascript - d3如何做并发动画?

标签 javascript animation d3.js concurrency

如何在同一组上执行并发动画?

例如,我有一个包含大量矩形的组,并且有一个动画可以选择该组并为其设置动画。但我还有一个按钮,可以选择同一组矩形并为矩形设置动画。我的问题是,当第一个动画发生并且我在按钮仍在运行时按下按钮时,按钮组动画会取消前一个动画,并且前一个动画不会完全执行。

    //Contains lots of rects
    var group = canvas.append("g") 
    //Animation 1 - slowly changes rects width to be wider
    group.selectAll("rect").transition().duration(2000).attr(width, 5000);
    //Animation 2 - slowly changes colour of rect to blue
    //Happens on button click
    group.selectAll("rect").transition().duration(2000).style("fill","blue") 

有没有办法让两个动画同时发生,这样第二个动画就不会停止第一个动画?

最佳答案

一种可能的解决方案是对“矩形”的宽度进行动画处理,然后在单击按钮时对“g”的填充进行动画处理。

d3.selectAll("rect").transition().duration(2000).attr("width", 5000);

d3.select("button").on("click", function() { 
        d3.select("g").transition().duration(2000).style("fill", "blue");
});

View example on jsfiddle

关于javascript - d3如何做并发动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23924685/

相关文章:

javascript - 使用 d3,如何创建直方图或条形图,其中最后一个条形是大于某个数字的所有值的计数?

javascript - 为什么 npm 不开始执行?

javascript - 如何从 iframe 打开弹出窗口

javascript - 如何存储/隐藏 JavaScript 事件并在以后重用?

android - 更改 TextView 时的动画

javascript - D3 JavaScript 返回数据值加上来自匿名函数的变量

javascript - Angular - 如何在 Angular 2 typescript 文件中正确导入 md5 哈希值?

python - fork 流图的 Matplotlib 动画

javascript - TweenJS 动画不起作用

javascript - 错误 : <path> attribute d: Expected number, "….43564672524005LNaN,NaNZ"