Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript SVG使用事件触发动画_Javascript_Events_Animation_Svg - Fatal编程技术网

Javascript SVG使用事件触发动画

Javascript SVG使用事件触发动画,javascript,events,animation,svg,Javascript,Events,Animation,Svg,如何触发svg animate元素,通过javascript开始使用任意事件制作动画?我正在想象类似于begin=“mySpecialEvent”,然后我可以发送mySpecialEvent,动画将开始(或者如果已经播放过,则重新开始)。这里有一篇文章介绍您需要的内容: 编辑:链接被删除。存档副本: 简言之: 准备好开始动画后,在SVGAnimationElement实例(元素)上创建。对于您的用例,使用标准的addEventListener()回调在您准备好时调用此方法,例如 myA

如何触发svg animate元素,通过javascript开始使用任意事件制作动画?我正在想象类似于
begin=“mySpecialEvent”
,然后我可以发送
mySpecialEvent
,动画将开始(或者如果已经播放过,则重新开始)。

这里有一篇文章介绍您需要的内容:

编辑:链接被删除。存档副本:

简言之:

  • 准备好开始动画后,在
    SVGAnimationElement
    实例(
    元素)上创建
    。对于您的用例,使用标准的
    addEventListener()
    回调在您准备好时调用此方法,例如

    myAnimationElement.addEventListener('mySpecialEvent',function(){
      myAnimationElement.beginElement();
    },false);
    

  • 启动SVG动画:

    如果没有javascript,则在动画元素上使用begin属性=“id.event”(不带“on”前缀)的“event value”类型;或

    <svg xmlns="http://www.w3.org/2000/svg" width="600px" height="400px">
      <rect x="10" y="10" width="100" height="100">
        <animate attributeName="x" begin="go.click" dur="2s" from="10" to="300" fill="freeze" />
      </rect>
    </svg>
    
    <button id="go">Go</button>
    
    
    ),“控制动画计时的属性”,“开始”属性,“事件值”值类型

    从javascript中,通过将动画元素的begin属性设置为“unfinite”;并从脚本中调用beginElement()

    function go () {
      var elements = document.getElementsByTagName("animate");
      for (var i = 0; i < elements.length; i++) {
        elements[i].beginElement();
      }
    }
    
    <svg xmlns="http://www.w3.org/2000/svg" width="600px" height="400px">
      <rect x="10" y="10" width="100" height="100">
        <!-- begin="indefinite" allows us to start the animation from script -->
        <animate attributeName="x" begin="indefinite" dur="2s" from="10" to="300" fill="freeze" />
      </rect>
    </svg>
    
    <button onclick="go();">Go</button>
    
    函数go(){
    var elements=document.getElementsByTagName(“动画”);
    对于(var i=0;i),“控制动画计时的属性”,“开始”属性,“不确定”值类型,

    +1为一个伟大的问题;我一直在想同样的事情。现在我知道了如何启动SVG动画点播,我可以改进这个答案了。:)伟大的事实上,简单地调用
    beginElement()
    也可以完成这项工作。不幸的是,在IE上不起作用:“对象不支持属性或方法'beginElement'”@Starwave在IE中几乎不起作用。这是web开发的一个不幸事实。@Phrogz答案中的第一个链接已经死了。也许它可以被这个替代?既然SVG动画不再受支持,我们将使用什么?