首页 > svg动态插入动画

svg动态插入动画

我绘制了一根线 用动画让它转移的位置。第一次绘制出来是OK的,有动画效果。但是后面绘制的就没有动画效果了。不知道为什么呢?之前没有怎么了解SVG 。贴上代码

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <script src="//cdn.bootcss.com/d3/3.5.16/d3.min.js"></script>
</head>
<body>

</body>
<script>
    function getSvg(){
        var width = 800,
                height = 800;
        var body=d3.select("body");
        var svgs=body.select("svg");
        if(svgs.size()>0){
            return svgs;
        }else{
            svgs=body.append("svg").attr("width",width).attr("height",height);
        }
        return svgs;
    }
    function drawLine(){
        var svg=getSvg();
        console.info(svg);
        var colors = ["green", "yellow", "skyblue", "orange"];

        var g=svg.append("g");
        g.append("path")
                .attr("fill",colors[parseInt(Math.random()*(colors.length + 1))])
                .attr("transform","scale(0.5)")
                .attr("d","M150,7.323c-0.055-7.414-39.468-4.979-43.584-4.979c-4.115,0-104.748,4.979-104.748,4.979s95.582,4.935,108.864,5.121C123.813,12.632,150.031,11.584,150,7.323z");

        var pA = "100,100";     //点A的坐标
        var pB = "400,100";     //点B的坐标


        var an=g.append("animateMotion")
                .attr("dur","1s")
                .attr("begin","0s")
                .attr("fill","freeze")
                .attr("repeatCount","1")
                .attr("rotate","auto")
                .attr("path","M" + pA + " L" + pB);

    }
    setInterval(function(){
        drawLine();
    },2000);
</script>
</html>

已经解决 每一个动画元素都嵌套在不同的svg元素中 就可以了!!!

【热门文章】
【热门文章】