2

这是 d3 示例中常见的计时函数:

d3.timer(function() {
    var angle = (Date.now() - start) * speed,
    transform = function(d) {
        return "rotate(" + angle / d.radius + ")";};
    lightsweep.select(".lightsweep").attr("transform", transform);
});

“光扫”是我特有的。d.radius 从绑定到“lightsweep”对象的数据对象中提取,用于旋转 svg 组。这段代码对我有用,但我想间歇性地运行它;比如说,运行它 1 秒钟,然后等待 10 秒钟,然后再次运行它。我怎样才能做到这一点?

注意:我不想使用 setInterval 或 setTimeout。d3 计时器有一些惊人的属性,并且比那些功能更好。但是 d3.timer 需要 areturn true来取消它。我想这可能是一个回调函数,但我想不出来。

谢谢你的帮助。

4

1 回答 1

2

是的 d3.timer - 它在支持它的浏览器内部使用 requestAnimationFrame - 具有很好的属性,例如当窗口/选项卡不在前台时暂停。但是在他的教程代码中,Mike Bostock(d3 作者)使用 setInterval 来涵盖这个用例,所以很遗憾,这可能是您的最佳选择。

于 2013-02-25T03:28:44.470 回答