我尝试在 d3.js 中进行链式转换。为此,我在数组中定义了一组转换,并(尝试)创建一个函数来递归调用它们.each("end", function())
,在前一个完成时开始转换,但我还没有结果。
行动清单
animations = [ function(){ console.log(1); return circle.transition().duration(2e3).attr("cy", Math.random()*300); } ,
function(){ console.log(2); return rect.transition().duration(3e3).attr("fill", "#"+((1<<24)*Math.random()|0).toString(16)); },
function(){ console.log(3); return circle.transition().duration(1e3).attr("r", Math.random()*500); },
function(){ console.log(4); return circle.transition().duration(2e3).style("fill", "#"+((1<<24)*Math.random()|0).toString(16)); },
function(){ console.log(5); return circle.transition().duration(1e3).attr("cx", Math.random()*500); }]
递归函数
function animate(index){
if(index < animations.length - 1){
index = index + 1
return animations[index]().each("end", animate(index))
} else {
return true
}
}
jsfiddle 是here, this是使用递归函数的示例。
谢谢大家。
你快到了!
代替
return animations[index]().each("end", animate(index))
you need
return animations[index]().each("end", function() { animate(index) })
See 更新了 jsFiddle
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)