javascript - 过渡期间的火灾事件

标签 javascript svg d3.js

有没有办法在转换处于某种状态时触发事件?例如,在下面的代码中,我有一个在屏幕上滚动的文本 block 。当文本 block 到达某个 x 坐标时,我希望触发一个事件(即突出显示文本)。

有没有办法通过转换来做到这一点,或者完成类似事情的最佳方法是什么?

Player.e.select('#activeTranscript')
            .transition()
            .each(function(d, i) {
                var test = 'test';
            })
            .ease('linear')
            .duration(function() {
                return Player.active_transcript.length * 500;
            })
            .attr('x', function(){
                return  -this.clientWidth;
            });

最佳答案

如果您知道文本到达 x 坐标需要多长时间,您可以让您的函数触发,然后使用 setTimeout 或 d3.timer。

要在转换期间精确控制触发事件,您必须使用 attrTween 和自定义插值来动手:

  .transition().duration(3000)
    .attrTween('y', function(d, i, a){
      var interpolator = d3.interpolate(a, 400);
      var halfWayDone = false;
      return function(t){
        if (t > .5 && !halfWayDone){
          d3.select('body').append('div').text('halfway done at ' + t);
          halfWayDone = true;
        }
        return interpolator(t);
      }
    })    

http://bl.ocks.org/1wheel/7800813

关于javascript - 过渡期间的火灾事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20390126/

相关文章:

当我点击代码隐藏上的 <li> 时,Javascript 函数返回错误

javascript - 使用局部 View 将提交按钮移到 MVC 5 中的表单之外

javascript - 删除字符串开头和结尾的单引号

javascript - gojs - 选择时更改节点的颜色,但否则返回原始颜色?

javascript - 如何在不触发缓慢重绘的情况下在网页上移动 SVG?

d3.js - d3 更新数字 - 向上/向下计数而不是立即替换数字

javascript - 如何在 FF 和 IOS 中使用 clip-path 多边形

svg - Ionic 3 背景图像 svg 未出现在 Ionic View 中

javascript - 使用类更改更改整个 svg

javascript - controllerAs 在指令的链接功能中不起作用