首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >图像序列动画只加载一次,而不是无限加载。

图像序列动画只加载一次,而不是无限加载。
EN

Stack Overflow用户
提问于 2018-01-25 07:09:01
回答 3查看 454关注 0票数 0

下面是我的代码,在这个1到15的图像中,这个图像一个接一个地加载到15,然后在特定的时间间隔内再次从1到15开始。在这个序列中,当页面被加载时,图像会无限播放,但是当页面被加载时,我希望图像只播放一次。我不能解决这个问题,请帮我解决这个问题。

代码语言:javascript
复制
onload = function startAnimation() { 
  var frames = document.getElementById("animation").children;
  var frameCount = frames.length;
  var i = 0;
  setInterval(function () { 
      frames[i % frameCount].style.display = "none";
      frames[++i % frameCount].style.display = "block";
  }, 100); 
}
代码语言:javascript
复制
#animation img {
    display: none;
}
#animation img:first-child {
    display: block;
}
代码语言:javascript
复制
<div id="animation"> 
  <img src="http://jumpingfishes.com/dancingpurpleunicorns/charging01.png">
  <img src="http://jumpingfishes.com/dancingpurpleunicorns/charging02.png">
  <img src="http://jumpingfishes.com/dancingpurpleunicorns/charging03.png">
  <img src="http://jumpingfishes.com/dancingpurpleunicorns/charging04.png">
  <img src="http://jumpingfishes.com/dancingpurpleunicorns/charging05.png">
  <img src="http://jumpingfishes.com/dancingpurpleunicorns/charging06.png">
  <img src="http://jumpingfishes.com/dancingpurpleunicorns/charging07.png">
  <img src="http://jumpingfishes.com/dancingpurpleunicorns/charging08.png">
  <img src="http://jumpingfishes.com/dancingpurpleunicorns/charging09.png">
  <img src="http://jumpingfishes.com/dancingpurpleunicorns/charging10.png">
  <img src="http://jumpingfishes.com/dancingpurpleunicorns/charging11.png">
  <img src="http://jumpingfishes.com/dancingpurpleunicorns/charging12.png">
  <img src="http://jumpingfishes.com/dancingpurpleunicorns/charging13.png">
  <img src="http://jumpingfishes.com/dancingpurpleunicorns/charging14.png">
  <img src="http://jumpingfishes.com/dancingpurpleunicorns/charging15.png">
</div>

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-01-25 07:19:16

@pratik,这将对您有所帮助:您应该使用clearInterval,如下所示:

代码语言:javascript
复制
if(j === 15) {
  clearInterval(interval);
}

示例

代码语言:javascript
复制
onload = function startAnimation() {
            var animDiv = document.getElementById('animation');
            var x = document.createElement("IMG");
            x.setAttribute("id", 'test');
            x.setAttribute("src",
                "http://jumpingfishes.com/dancingpurpleunicorns/charging01.png");
            animDiv.appendChild(x);

            var i = 1,
                j = 2;
            var interval = setInterval(function () {
                var y = (i < 10) ? '0' + i.toString() : i.toString(),
                    z = (j < 10) ? '0' + j.toString() : j.toString(),
                    url = document.getElementById('test').src;
                document.getElementById('test').src = url.replace(y, z);
                i++;
                j++;
                if (j === 16) {
                    clearInterval(interval);
                }
            }, 100);
        }
代码语言:javascript
复制
#animation img {
  display: none;
}

#animation img:first-child {
  display: block;
}
代码语言:javascript
复制
<div id="animation">

</div>

票数 1
EN

Stack Overflow用户

发布于 2018-01-25 07:12:16

你应该使用clearInterval();

代码语言:javascript
复制
onload = function startAnimation() { 
    var frames = document.getElementById("animation").children;
    var frameCount = frames.length;
    var i = 0;
    var myInterval=setInterval(function () { 
       if(i==frameCount-2){
         clearInterval(myInterval);
        }
        frames[i % frameCount].style.display = "none";
        frames[++i % frameCount].style.display = "block";
        
    }, 100); 
}
代码语言:javascript
复制
#animation img {
    display: none;
}
#animation img:first-child {
    display: block;
}
代码语言:javascript
复制
<div id="animation"> 
    <img src="http://jumpingfishes.com/dancingpurpleunicorns/charging01.png" />
    <img src="http://jumpingfishes.com/dancingpurpleunicorns/charging02.png" />
    <img src="http://jumpingfishes.com/dancingpurpleunicorns/charging03.png" />
    <img src="http://jumpingfishes.com/dancingpurpleunicorns/charging04.png" />
    <img src="http://jumpingfishes.com/dancingpurpleunicorns/charging05.png" />
    <img src="http://jumpingfishes.com/dancingpurpleunicorns/charging06.png" />
    <img src="http://jumpingfishes.com/dancingpurpleunicorns/charging07.png" />
    <img src="http://jumpingfishes.com/dancingpurpleunicorns/charging08.png" />
    <img src="http://jumpingfishes.com/dancingpurpleunicorns/charging09.png" />
    <img src="http://jumpingfishes.com/dancingpurpleunicorns/charging10.png" />
    <img src="http://jumpingfishes.com/dancingpurpleunicorns/charging11.png" />
    <img src="http://jumpingfishes.com/dancingpurpleunicorns/charging12.png" />
    <img src="http://jumpingfishes.com/dancingpurpleunicorns/charging13.png" />
    <img src="http://jumpingfishes.com/dancingpurpleunicorns/charging14.png" />
    <img src="http://jumpingfishes.com/dancingpurpleunicorns/charging15.png" />
</div>

票数 1
EN

Stack Overflow用户

发布于 2018-01-25 07:12:46

一旦你想让它停止运行,你就必须清除你的间隔。使用clearInterval()

请检查此示例:

请注意,intervalEnd是一个数字,一旦i到达它,将清除您的间隔。

代码语言:javascript
复制
onload = function startAnimation() { 
    var frames = document.getElementById("animation").children;
    var frameCount = frames.length;
    var i = 0;
    var intervalEnd = 100;
    var intervalId = setInterval(function () { 
        frames[i % frameCount].style.display = "none";
        frames[++i % frameCount].style.display = "block";
        if (i >= intervalEnd)
          clearInterval(intervalId)
    }, 100); 
}
代码语言:javascript
复制
#animation img {
    display: none;
}
#animation img:first-child {
    display: block;
}
代码语言:javascript
复制
<div id="animation"> 
    <img src="http://jumpingfishes.com/dancingpurpleunicorns/charging01.png" />
    <img src="http://jumpingfishes.com/dancingpurpleunicorns/charging02.png" />
    <img src="http://jumpingfishes.com/dancingpurpleunicorns/charging03.png" />
    <img src="http://jumpingfishes.com/dancingpurpleunicorns/charging04.png" />
    <img src="http://jumpingfishes.com/dancingpurpleunicorns/charging05.png" />
    <img src="http://jumpingfishes.com/dancingpurpleunicorns/charging06.png" />
    <img src="http://jumpingfishes.com/dancingpurpleunicorns/charging07.png" />
    <img src="http://jumpingfishes.com/dancingpurpleunicorns/charging08.png" />
    <img src="http://jumpingfishes.com/dancingpurpleunicorns/charging09.png" />
    <img src="http://jumpingfishes.com/dancingpurpleunicorns/charging10.png" />
    <img src="http://jumpingfishes.com/dancingpurpleunicorns/charging11.png" />
    <img src="http://jumpingfishes.com/dancingpurpleunicorns/charging12.png" />
    <img src="http://jumpingfishes.com/dancingpurpleunicorns/charging13.png" />
    <img src="http://jumpingfishes.com/dancingpurpleunicorns/charging14.png" />
    <img src="http://jumpingfishes.com/dancingpurpleunicorns/charging15.png" />
</div>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48437395

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档