我一直很难理解一些 D3 概念(我对 javascript 比较陌生,这无济于事)。我想做的是有一个状态指示灯,从绿色开始,慢慢变黄,然后慢慢变红。如果发生某些事件(按下按钮、收到消息等),我希望指示器返回绿色,重新开始转换。
这是一个简单的示例(在 jQuery 中),显示了基本的视觉效果(无法重置)http://jsfiddle.net/N4APE/
在 D3 中,我的想法是将背景颜色映射到经过的毫秒数。我试图创建这样的比例:
//10 sec is yellow, 30 sec is red
d3.scale.linear().domain([0, 10000, 30000]).range(["#00ff00", "#ffff00", "#ff0000"]);
但现在我有点迷路了。我一直在玩转场、补间和插值器的组合,但我似乎没有取得任何进展。这里有一些可悲的尝试让它工作http://jsfiddle.net/Ebuwa/
我的问题:
- 我不知道如何将过渡的经过的毫秒与我的比例相关联,然后设置背景颜色
- 我的过渡似乎在我创建它时运行,而不是在我调用它时运行,并且它在错误的元素上运行。
- 一旦我克服了其他问题,我不确定如何重置过渡以使其保持绿色。
另一个注意事项,我可以很高兴使用 svg 圆圈或类似的东西,但我在操作 svg 填充属性时运气不佳,因为我有一个 html 背景属性。
谢谢