js动态修改path值 svg_svg关于animateMotion动态改变path路径来控制svg元素移动

本文探讨了一个SVG动画问题,即如何使用JavaScript动态更新animateMotion元素的path属性来控制SVG元素的移动。作者创建了一个示例,但遇到问题:元素只在第一次移动后不再响应。尽管path的值在定时器更新下改变,但动画效果并未按预期进行。代码和详细解释已提供,寻求社区帮助解决这一持续已久的问题。
摘要由CSDN通过智能技术生成

用js动态改变animateMotion的path属性 要控制移动的元素只有第一次的时候可以滑动,我用的定时器模拟的后台推过来的数据(用于控制元素移动的坐标)但是只能在第一次的时候可以滑动,然后调试发现path的值也改变了但是就是没有效果,以下是写的demo 请大家指点一下,困扰好长时间了,谢谢。PS:代码看着不清楚的 也可以到svgDemo看效果,浏览器中可以看到源码`

id="animateMotion"

xmlns:xlink="http://www.w3.org/1999/xlink"

xlink:href="#circle"

dur="2s"

begin="0s"

fill="freeze"

repeatCount="1">

des = 50;

path=document.createElementNS("http://www.w3.org/2000/svg","path");

path.setAttributeNS(null,"id","motionPath");

path.setAttributeNS(null,"fill","none");

path.setAttributeNS(null,"stroke","red");

path.setAttributeNS(null,"stroke-miterlimit","10");

path.setAttributeNS(null,"d","M 50,50 L 100,100");

document.getElementById("svg").appendChild(path);

setInterval("myInterval()",3000);

function myInterval(){

var x1 = 50+des;

var y1 = 50+des;

var x2 = 100+des;

var y2 = 100+des;

p = "M " +x1+","+y1+" L "+x2+","+y2+"";

document.getElementById("motionPath").setAttribute("d",p);

if(des<401){

if(des==400){

des = 0;

}else{

des = des + 50;

}

}else{

des = 50;

}

}

]]>

`

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值