我正在尝试编写一个涉及Snap SVG的函数,该函数将允许我传递对象或值数组,通过该对象或值数组可以迭代构建动画属性。

例如,如果我可以通过:
[转换:'t100,100',转换:'r10,10,10']

变成这个:

animateElementWithSnap: function(element, parentSVG, animationValues, duration, easing) {
        var s = Snap.select("#"+ parentSVG),
            theElement = s.select("#"+ element);

        theElement.animate({
           // Iterate over Object.keys(animationValues)
           transform: 't100,100',
           transform: 'r10,10,10'
        }, duration, easing);
    }

最佳答案

您不需要遍历属性数组。实际上,您可以将animationValues创建为一个对象。

给定您这样设置值:

var animationValues = {
    transform: 't100,100',
    transform: 'r10,10,10'
};


然后,您可以像这样更改动画调用:

animateElementWithSnap: function(element, parentSVG, animationValues, duration, easing) {
    var s = Snap.select("#"+ parentSVG),
        theElement = s.select("#"+ element);

    theElement.animate(animationValues, duration, easing);
};

07-24 21:07