我注意到在Bostock 最近的一个街区他有一个'开始'事件:
d3.select("body").selectAll("div")
.data(d3.range(n))
.enter().append("div")
.transition()
.delay(function(d, i) { return i + Math.random() * n / 4; })
.ease(d3.easeLinear)
.on("start", function repeat() {
d3.active(this)
.styleTween("background-color", function() { return whiteblue; })
.transition()
.delay(1000)
.styleTween("background-color", function() { return blueorange; })
.transition()
.delay(1000)
.styleTween("background-color", function() { return orangewhite; })
.transition()
.delay(n)
.on("start", repeat);
});
Run Code Online (Sandbox Code Playgroud)
有谁知道这是做什么的?
是等同于负载还是在转换开始的延迟期后触发?
该块是用d3
v4 编写的.它看起来像v3 transition.each已经被重命名为transition.on(这更有意义).说过这start
一直是转型的事件类型:
如果指定了type,则为转换事件添加一个侦听器,支持"start","end"和"interrupt"事件.将为转换中的每个单独元素调用侦听器.
在调用任何补间之前,在转换的第一个异步回调(tick)期间调用start事件.对于零延迟的转换,通常在调度转换后约17ms.状态事件对于触发每个元素的瞬时更改非常有用,例如更改无法插值的属性.
为了回答你的具体问题(我的上面的粗体)"或是在延迟期后过渡开始的时候" - 是的.
归档时间: |
|
查看次数: |
1946 次 |
最近记录: |