javascript - d3 : how to move a vertical line in horizontal direction and support 'pause' and 'continue' movement

标签 javascript d3.js

我想在水平方向移动一条竖线,支持'pause'和'continue'移动。当我点击“暂停”按钮时,线路停止移动;当“continue”时,线继续移动。

现在,我使用'transition'函数实现了从左到右的水平过渡,但不知道如何'pause'和'continue'。

这是我的演示:

<html>
<head>
    <script src="https://d3js.org/d3.v4.min.js"></script>
</head>
<body>
  <svg width="500" height="500">
    <line x1="100" y1="0" x2="100" y2="100" stroke="black"/>
  </svg>
</body>

<script>
  d3.select("line").transition()
    .ease(d3.easeLinear)
    .duration(2000)
    .attr("x1",200)
    .attr("x2",200);
</script>
</html>

是否可以“暂停”过渡或如何在不使用“过渡”功能的情况下使用其他方式实现此目标?

最佳答案

这是一种方法:

<html>
<head>
    <script src="https://d3js.org/d3.v4.min.js"></script>
</head>
<body>

  <div class="control-buttons">
    <button class="pause">
      Pause
    </button>
    <button class="continue">
      Continue
    </button>    
  </div>
  <svg width="1000" height="500">
    <line x1="100" y1="0" x2="100" y2="100" stroke="black"/>
  </svg>
</body>

<script>   
  // pause
  d3.select('button.pause').on('click', function() {
  	d3.select("line").interrupt();
  });
  
  d3.select('button.continue').on('click', function() {
   d3.select("line").transition()
      .ease(d3.easeLinear)
      .duration(10000)
      .attr("x1",800)
      .attr("x2",800);
  }).dispatch('click');
  
</script>
</html>

d3-transition-interrupt是你应该寻找的。我已经将它用于暂停 按钮和继续 按钮,点击只是重新启用了相同的转换。要开始转换,请点击继续按钮。

这只是一个基本版本,但我希望逻辑足够清晰。希望这会有所帮助。

关于javascript - d3 : how to move a vertical line in horizontal direction and support 'pause' and 'continue' movement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50605579/

相关文章:

javascript - jQuery/bootstrap 在单击按钮时显示日期选择器并将值分配给变量而不输入文本

javascript - AngularJS 按钮单击绑定(bind)值到输入

javascript - 更新 d3 Force Layout 中的现有节点

javascript - 处理元素时 d3 与 svg

javascript - 文本元素未显示在 SVG 上

javascript - jasmine.clock().tick() 不适用于 $timeout 和 debounce,但适用于 setTimeout

javascript - For 循环创建太多按钮

javascript - 如何编写不区分大小写的 Javascript 搜索

javascript - typescript 导入 d3 和 d3-force-attract

javascript - 如何在 dc 图表中创建动态 D3 tickFormat