javascript - D3.js:在前一个转换完成之前不要开始新的转换?

标签 javascript d3.js

我正在使用 D3 图表和 Google map 。我希望图表在 map 缩放比例发生变化时进行转换。如果缩放的变化速度不快于过渡完成更新,则效果很好。但是,连续两次单击缩放会导致过渡中断。

如何在上一个转换完成之前停止下一个转换?

这是我的代码(它是一个 Backbone 应用程序):

    render: function() { 
      this.renderMap();
    },
    renderMap: function() {
      var that = this; 
      ...
      google.maps.event.addListener(that.mapControl, 'zoom_changed', function() {
        that.change();
      });
    },
    change: function() {
      var that = this;
      d3.transition().duration(750).each(function() {
        that.redraw();
      });
    },
    redraw: function() {
      ...
      this.redraw = function() {
        ...
        var barUpdate = d3.transition(bar).attr("transform", function(d) {
            return "translate(0," + (d.y0 = y(d.State)) + ")";
        }).style("fill-opacity", 1);
      };
    }

最佳答案

查看您的代码,我认为您可以通过添加基于索引的延迟来分离您的转换。

.transition()
  .duration(750)
  .delay(function(d, i){
        return i * 750
  })

如果您正在寻找过渡结束的确切时刻,您可以尝试将 .each("end", listener) 添加到 transition() ,它将在过渡结束时调用监听器。 Transitions#Control .让代码看起来像这样?

.transition()
    .duration(750)
    .each("end", that.redraw())

希望这对您有所帮助。

关于javascript - D3.js:在前一个转换完成之前不要开始新的转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15929453/

相关文章:

用于访问 svg transform translate 的 x/y 值的 Javascript

javascript - 如何使用 d3 中的对象打开 json 文件?

javascript - d3 v4 geo 绘制边界反转

javascript - 检查其值存储在数组中的复选框

javascript - 如何将 Javascript 中的转义字符转换为 .txt 文件?

javascript - 引导覆盖不生效

javascript - 脚本不工作。 Lint 说需要分号

r - 如何将数据驱动的 d3JS 图与 Shiny 集成?

javascript - 未捕获的语法错误 : Unexpected end of JSON input

javascript - 如何使用CSS动态修复顶部