以下作品(圆圈将在提供的位置移动到新位置)
d3Target看起来如下,并且我们知道的是正确的,因为第一个代码块通过直接调整attrs而没有transition()调用而工作. @H_301_4@
d3target .attr('cx',newCX ) .attr('cy',newCY )@H_301_4@但是这些没有:
d3target .transition() .attr('cx',newCY ) // .duration(1000) // Still doesn't work with or without the duration@H_301_4@而且也不是:(通过提供起始值as suggested by API docs)
d3target .attr('cx',originalCX ) .attr('cy',originalCY ) .transition() .attr('cx',newCY ) // .duration(1000) // Still doesn't work with or without the duration@H_301_4@圈子不动画,也不动.我们尝试手动将dur设置为1秒,以确保动画未完成或跳过,因为它太小,无法被注意或跳过等等. @H_301_4@我们已经尝试了许多可能性,为什么,所以任何想法,为什么或什么尝试是非常感激的. @H_301_4@基本信息供参考:
d3Target看起来如下,并且我们知道的是正确的,因为第一个代码块通过直接调整attrs而没有transition()调用而工作. @H_301_4@
解决方法
首先将转换(转换方法返回)转换为变量,然后尝试使用console.log(transition_selection.empty()).如果这是虚假的,那么你知道你有转型的东西.
@H_301_4@第二个尝试:transition_selection.each(‘start’,function(){console.log(‘started’);}).each(‘interrupt’,function(){console.log(‘interrup’);}) (‘end’,function(){console.log(‘ended’);});
@H_301_4@这样,您将可以看到转换是否已经开始并被中断.
@H_301_4@第三个尝试:transition.attr(‘cx’,function(d){console.log(‘attr got assigned’);)});
@H_301_4@这样你就可以知道你为’cx’提供的值是否被读取.
@H_301_4@实际上在同一个运行中尝试所有上述.所以你可以看到按什么顺序发生什么.
@H_301_4@总是尝试命名你的过渡. d3traget.transition( ‘somename’)
@H_301_4@这样就可以在同一选择上并行运行多个转换.如果在同一选择上运行多个“未命名”转换,则第二个转换将停止第一个转换.
@H_301_4@希望我给你的任何一个帮助你解决你的问题.祝你好运!