处理d3动画队列时,可以替代eval()

sg.cc

我正在编写一个将运行许多小型动画的应用程序。某些属性可能具有动画效果,而其他属性则可能没有动画,这取决于它们的可用性。但是,d3动画需要排在队列中才能工作,我看到的除了使用eval()之外没有其他方法。

我的代码如下所示:

            var func = "thisClass.tagHandle.transition() \
                .duration(len).ease('linear')";
            if( typeof somevar.x !== 'undefined' ) {
                func += ".attr('cx', somevar.x)";
            }
            if( typeof somevar.y !== 'undefined' ) {
                func += ".attr('cy', somevar.y)";
            }
            if( typeof somevar.r !== 'undefined' ) {
                func += ".attr('r', somevar.r)";
            }
            if( typeof somevar.c !== 'undefined' ) {
                func += ".attr('stroke', somevar.c)";
            }
            func += ";";
            eval(func);

在队列外部分别执行每个动画,会使动画无法正常工作。该功能可能很快就会执行-当我考虑将虚拟值放入动画队列中时,我担心效率和功能问题,从而占用了不必要的处理时间(Firefox上的应用程序已经有些繁重了)。然而,许多人说,评估是邪恶的等等。除了这个问题,还有其他好的选择吗?

这是我第一次使用eval()。我不知道这是否像iframe(一种经常被滥用的工具,导致不必要的不​​良声誉),还是像瘟疫那样真正应避免的东西。

谢谢。

阿米莉亚

在同一个对象上创建多个过渡会取消其他过渡,但是向同一个过渡添加新的属性或样式语句不是问题。您只需要将转换保存在变量中即可。

var activeTransition = thisClass.tagHandle.transition() 
            .duration(len).ease('linear');

if( typeof somevar.x !== 'undefined' ) {
    activeTransition.attr('cx', somevar.x);
}
if( typeof somevar.y !== 'undefined' ) {
    activeTransition.attr('cy', somevar.y);
}
if( typeof somevar.r !== 'undefined' ) {
    activeTransition.attr('r', somevar.r);
}
if( typeof somevar.c !== 'undefined' ) {
    activeTransition.attr('stroke', somevar.c);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

加载时对D3甜甜圈图进行动画处理

来自分类Dev

D3对页面上的图形进行动画处理

来自分类Dev

D3动画直方图

来自分类Dev

d3 vs. svg处理元素时

来自分类Dev

在函数中使用id时可以替代eval

来自分类Dev

使d3中的动画弧响应?

来自分类Dev

使用for循环的D3链接动画

来自分类Dev

更改D3动画的方向/过渡?

来自分类Dev

D3沿路径的多个动画

来自分类Dev

d3动画按路径分组

来自分类Dev

d3弧形动画路径

来自分类Dev

在D3中动画包装文本

来自分类Dev

删除D3强制布局的动画

来自分类Dev

用d3动画ng-repeat指令模板时出现问题

来自分类Dev

应用d3动画时,输入插入符号在Chrome中停止闪烁

来自分类Dev

D3映射应使用队列读取第二个外部json数据并在悬停时显示

来自分类Dev

D3 折线图/面积图可以处理无序数据吗?

来自分类Dev

替代或防止D3中的路径重叠

来自分类Dev

Alternative to eval() when dealing with d3 animation queues

来自分类Dev

将鼠标悬停在强制布局d3中的节点上时连接的链接线动画

来自分类Dev

将鼠标悬停在强制布局d3中的节点上时连接的链接线动画

来自分类Dev

由于缩小,可以替代eval()函数

来自分类Dev

使用d3刻度时是否可以设置色彩空间插值?

来自分类Dev

如何为D3面积图的区域设置动画?

来自分类Dev

d3:平滑动画手绘线?

来自分类Dev

如何在D3中为文本锚定动画

来自分类Dev

使用d3和Leaflet实现动画缩放

来自分类Dev

Javascript-数据插值-D3动画散点图

来自分类Dev

使用D3创建动画的脉冲圆