javascript - 如何在 javaScript 中停止间隔动画

标签 javascript animation settimeout setinterval

所以我有这个由 41 帧组成的动画,我试图让这个动画在最后一帧结束并停留在最后一帧,我必须承认......我很迷茫。任何帮助都会很棒!非常感谢!

一旦我弄清楚如何停止动画,我还想让它在鼠标悬停时启动并在鼠标悬停时恢复到第 1 帧。

html:

    <div id="door">
       <img src="images/Animation_Door/0001.png">
       <img src="images/Animation_Door/0002.png">
       <img src="images/Animation_Door/0003.png">
       ...(41 frames in total)
    </div>

CSS:

   #door {
    background-color:transparent;
    position:absolute;
    width:800px;
    height:700px;
    top:90px;
    left:50%;
    margin-left:-400px;
    padding:0px;
    overflow:hidden;
    cursor:pointer;
    z-index:25;
  }

  #door img{
    display: none;
  }

  #door img:first-child {
    display: block;
  }

JavaScript:

var interval = setInterval("function ani()", 50);  
     setTimeout(function(){ clearInterval(interval) }, 40);

     onload = function startAnimation() { 
        var frames = document.getElementById("door").children;
        var frameCount = frames.length;
        var i = 0;
     setInterval(function ani() { 
        frames[i % frameCount].style.display = "none";
        frames[++i % frameCount].style.display = "block";
     }, 50);
}

最佳答案

function startAnimation() { 
  var frames = document.getElementById("door").children;
  var frameCount = frames.length;

  for (i=0; i<41; i++) {
      setTimeout(function(){
          frames[i].style.display = "none";
          frames[i+1].style.display = "block";
      },50*i);
  }
}

关于javascript - 如何在 javaScript 中停止间隔动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13656881/

相关文章:

javascript - CSS 过渡不适用于 Javascript

javascript - 如何处理固定日期的突变?

javascript - 谷歌地图登录混合应用卡住了

JavaScript:为什么原生 Array.prototype.map 比 Chrome 控制台中的 for 循环更快?

ios - CABasicAnimation - 从一个动画切换到另一个。如何获取动画的currentValue?

javascript setTimeout 没有做我期望的事情

ios - 使用 GPUImage 的模糊 View 动画

javascript - D3.js - 补间弧位置,内半径和外半径 - D3.js Arc

javascript - 帮助在 settimeout 和 setinterval 之间进行选择

ios - 如何为iOS中的网络连接测试计算有效负载大小和超时长度?