使用XHTML中的嵌入式SVG从Javascript创建动画
create animations from Javascript using embedded SVG in XHTML
我在XHTML中使用嵌入式SVG并希望从Javascript创建动画,但它没有按预期工作
我正在使用XPDL对业务流程进行建模,并将模拟连接到SVG图形,我使用javascript对其进行动画处理。我在Firefox中这样做,模型和图形嵌入在XHTML中。现在的问题是我想使用 animateMotion-Tag 沿路径移动对象。两者都已经存在,所以我尝试将我的解决方案写入 SVG 文件,这工作正常。它看起来像:
<animateMotion xlink:href="#id1" rotate="auto" dur="2s">
<mpath xlink:href="#id2">
</animateMotion>
当然,命名空间设置正确,因此按预期工作。我手动触发它,因此不需要开始时间。现在,我在现有的混合XHTML/SVG-dom中做同样事情的方法:
function moveAlongPath(elemId,pathId,rotate,duration)
{
var svgNs = "http://www.w3.org/2000/svg";
var xlinkNs = "http://www.w3.org/1999/xlink";
var motionElem = document.createElementNS(svgNs,"animateMotion");
motionElem.setAttributeNS(xlinkNs,"href","#" + elemId);
motionElem.setAttributeNS(svgNs,"rotate",rotate);
motionElem.setAttributeNS(svgNs,"dur",duration + "ms");
var pathRef = document.createElementNS(svgNs,"mpath");
pathRef.setAttributeNS(xlinkNs,"href","#" + pathId);
motionElem.appendChild(pathRef);
var animElem = svgRootNode.getElementById(elemId); // It is indeed the <svg>-Node
animElem.appendChild(motionElem);
// Setting x and y to 0 is important for the Element to be "on" the Path
animElem.setAttribute("x",0);
animElem.setAttribute("y",0);
motionElem.beginElement();
}
当我在 firebug 中检查 dom 时,这似乎会产生具有相同属性的相同节点结构,尽管 href 没有以 xlink: 为前缀,但 setAttributeNS 应该这样做,对吧?这里的问题是我无法使用beginElement((启动动画。这里什么也没发生。
我希望那里有帮助,我现在真的很绝望。
编辑:我终于找到了。使用时问题消失了
setAttributeNS(null,"attr",value)
而不是
setAttributeNS(svgNs,"attr",value)
如果我错了,请纠正这一点,但我的第一个方法不是 XML 的想法吗?不应该有无命名空间的属性吗?无论如何 - 解决了!
使用
setAttributeNS(null,"attr",value)
而不是
setAttributeNS(svgNs,"attr",value)
variableElementNS.href.baseVal = value;
相关文章:
- 从javascript创建一个列表
- 使用Javascript创建测验页面
- 获取对使用Tampermonkey使用javascript创建的元素的引用
- Jquerymobile-使用javascript创建选择菜单
- 使用SVG和JavaScript创建波浪动画
- 用javascript创建一个看起来正常分布的模式
- 如何在Ol3弹出窗口中添加用javascript创建的按钮上的点击事件
- 在PHP邮件中发送javascript创建的内容
- Knockout绑定是膨胀的html(表单元格),如何使用javascript创建绑定或从父元素绑定
- 重置使用javascript创建的新tr的val
- 如何使用javascript创建颜色数组
- javascript创建日期的月份错误
- 如何使用JavaScript创建时间计数器
- 使用Javascript创建内部样式表
- 用javascript创建另一个对象的实例
- 如何使用HTML、CSS和JavaScript创建自动图片库幻灯片
- 使用Javascript创建的Cookie在C#代码中不可访问..任何原因或其他选择
- 用javascript创建对象的dynamic数组
- Javascript创建函数,以便在其他函数之间共享变量
- 使用javascript创建幻灯片效果