D3太阳爆发与更新的数据:多个过渡仍然snap,不顺利
D3 sunburst with updated data: multiple transitions still snap, not smooth
这个问题建立在Lars Kotthoff对基于不同JSON数据的D3 sunburst图的过渡问题的非常有用的回答之上:D3 - sunburst -给定更新数据的过渡-尝试动画,而不是snap
我已经尝试了Lars提供的最后一个小提琴,但是当有多个过渡时,动画仍然失败,我们开始捕捉。这个问题可以在这个包含第二个转换的更新后的小提琴中看到。
据我所知,x0
和dx0
值在调用arcTweenUpdate
函数时没有正确地存储在路径对象中。当我检查arcTweenUpdate
函数中this
对象的样子时,当读取this.x0
和this.dx0
时,我在函数的开头得到一个[object SVGPathElement],当稍后写入新值时,我得到一个[object Window]。我对JS相对缺乏经验,但这似乎可以指出问题所在。
任何帮助解决这个问题,并使上述小提琴工作的多个转换(例如在两个json之间来回)是高度赞赏的。谢谢!
你已经发现了我之前的答案中的一个错误:)
问题是,正如你所说的,保存的值没有正确更新。这是因为回调中的this
不再引用path
DOM元素。修复方法很简单——在上述级别的函数中保存对this
的引用,并使用该引用:
function arcTweenUpdate(a) {
var i = d3.interpolate({x: this.x0, dx: this.dx0}, a);
var that = this;
return function(t) {
var b = i(t);
that.x0 = b.x;
that.dx0 = b.dx;
return arc(b);
};
}
相关文章:
- 是否可以在不创建svg对象的情况下创建捕捉元素?[snap.svg]
- 创建一个不依赖于Snap实例的组
- 解决小问题(工作不顺利)
- 使用 Snap.svg 导入 SVG 时不会显示渐变
- Snap.svg animation stop() 不会停止动画
- snap在 SVG + 事件中添加 SVG 不起作用
- 为什么我的卷轴不能顺利向上滚动
- 为什么当我将函数添加到Snap.load(..正在加载SVG..我的方法..)中时,我不能调用Snap.Road()内部
- 即使设置了过渡,CSS动画也不会顺利返回
- 正在尝试使用snap.svg;纸“;对象获胜'不起作用
- D3过渡,边际顶部进行得不顺利
- 为什么在可拖动事件中显示和隐藏snap对象时,可拖动元素不响应snap选项?
- Snap.svg不起作用
- D3太阳爆发与更新的数据:多个过渡仍然snap,不顺利
- 不能使用snap.val()更新Firebase数据库对象
- 平滑滚动到顶部不工作顺利
- 我是jquery的新手,正在学习snap.svg,不知道这段代码是如何工作的?有人可以解释一下函数是如何得到值的
- jQuery UI可拖动Snap恢复不工作
- 不能用Snap.svg在文本路径上设置startOffset属性
- 同一页面上的多个计时器;工作不顺利