哪个SVG / SMIL DOM元素有`beginElement`方法?
最终这是针对将在Firefox中运行的Kiosk风格的应用程序(使用jQuery 1.6.4),因此答案可以是特定于Firefox的。
我正在尝试制作一个动画SVG,但我试图通过动态插入SMIL来动画它。 我没有看到任何暗示无法完成的事情,并且http://satreth.blogspot.ch/2013_01_01_archive.html和http://srufaculty.sru.edu/david.dailey/svg/SMILorJavaScript.svg似乎都表示它可以做到。
我理解的问题是我需要调用beginElement
方法来启动动态插入的动画,但我没有在任何地方看到它。
这是一个演示问题的小提琴: http : //jsfiddle.net/2pvSX/
未能回答标题中的问题:
- 我究竟做错了什么?
- 是否有任何资源可以更好地了解我正在尝试做什么?
这是一个问题:
- 我是如何定义SVG的?
- 我是如何创建SMIL的?
- 我是如何访问SVG的?
- 我是如何插入SMIL的?
- 还有别的吗?
最后,有没有更好的方法来动画SVG?
你需要添加'http://www.w3.org/2000/svg'
来创建这样的动画元素
$(document).ready(function () { var svg = $('svg').get(0), square = svg.getElementById('red'), animation = document.createElementNS('http://www.w3.org/2000/svg', 'animateMotion'); animation.setAttributeNS(null, 'id', 'walker'); animation.setAttributeNS(null, 'begin', 'indefinite'); animation.setAttributeNS(null, 'end', 'indefinite'); animation.setAttributeNS(null, 'dur', '10s'); animation.setAttributeNS(null, 'repeatCount', 'indefinite'); animation.setAttributeNS(null, 'path', 'M 0 0 H 800 Z'); square.appendChild(animation); console.log(animation); console.log(typeof animation.beginElement); animation.beginElement(); });
同时删除此行animation = svg.children[1].children[0].children[1];
所以animation元素有beginElement函数
http://jsfiddle.net/2pvSX/1/