【问题标题】:svg text animation with delaysvg 文本动画延迟
【发布时间】:2015-05-08 15:29:50
【问题描述】:

我想实现类似http://24ways.org/2013/animating-vectors-with-svg/ 的东西,但我希望每个字母在前一个完成之后开始绘制。我不知道如何延迟实现。

这是我的代码:

var init = function() {

path = new Array();
length = new Array();

for(var i=1; i<3; i++){
       path[i] = document.getElementById('path'+i);
       length = path[i].getTotalLength();
       path[i].style.transition = path[i].style.WebkitTransition = 'none';

       length[i] = length;
       path[i].style.strokeDasharray = length + ' ' + length;
       path[i].style.strokeDashoffset = length;

       path[i].getBoundingClientRect();
       path[i].style.transition = path[i].style.WebkitTransition = 'stroke-dashoffset 2s ease-in-out';

       path[i].style.strokeDashoffset = '0';
    }
};

init();

在这个例子中,我有两个字母“sp”,我想先绘制“s”,然后在完成时开始“p”字母。在我的示例中,两个字母同时绘制。如果有人可以帮助我,我将不胜感激。

这里是http://jsfiddle.net/thLvLkq0/的例子

【问题讨论】:

    标签: javascript svg svg-animate


    【解决方案1】:

    让动画在延迟后开始怎么样?

    我叉了你的小提琴让它像那样工作。

    http://jsfiddle.net/pz19fL7h/

    for(var i=1; i<3; i++) {
        init(i);
        (function(i) {
            window.setTimeout(function() { start(i, duration); }, (i-1)*duration);
        })(i);
    }
    

    所以基本上,行为是:

    1. 初始化(隐藏)所有路径
    2. 将它们全部设置为在持续时间*i 延迟后启动

    如果已知路径绘制的持续时间,这应该很容易做到。

    【讨论】:

    • 非常感谢!!!我正在尝试使用 dalay 函数,但它无法成功!
    • 诀窍还在于创建一个自调用函数,因此i 参数位于上下文内部(因为它作为参数传递),并且不会被外部for 修改。跨度>
    • 是的,我会尝试制作自调用函数。再次感谢大家。
    • 嗨!抱歉打扰了,但我遇到了 Internet Explorer 错误。 Internet Explorer 调试器说“无法获取未定义或空引用的属性 'getTotalLength'”。有什么办法可以得到长度吗?所以能兼容ie吗?
    猜你喜欢
    • 1970-01-01
    • 2018-12-21
    • 1970-01-01
    • 2015-10-19
    • 2018-10-31
    • 1970-01-01
    • 1970-01-01
    • 2012-05-10
    • 1970-01-01
    相关资源
    最近更新 更多