每隔一段时间运行d3.timer

时间:2013-02-07 02:28:08

标签: d3.js

这是d3示例中常见的计时功能:

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

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

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

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

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