Javascript setInterval 不必要的暂停

标签 javascript setinterval

我正在尝试用 javascript 创建一个带有一些图像的动画,并且代码可以正常工作,但是在它反向运行图像之后,它会稍微暂停一下,然后再开始前进。我想知道如何摆脱暂停?

这是正在运行的代码 http://isogashii.com/projects/javascript/ch10/dp10-6.html

HTML

<img id="pin" src="assets/pin0.gif" alt="pin animation" />

Javascript

var pin = new Array(9);
var curPin = 0;
var x = false;

// caching images
for (var imagesLoaded=0; imagesLoaded < 9; ++imagesLoaded) {
    pin[imagesLoaded] = new Image();
    pin[imagesLoaded].src = "assets/pin" + imagesLoaded + ".gif";

    //starts pinF function when all images are cached
    if (imagesLoaded == 8) {
        setInterval("pinF()", 120);
    }
}

function pinF() {

    if (x == true) {
        --curPin;
        if (curPin == 0) {
            x = false;
        }
    }
    if (x == false) {
        ++curPin;
        if (curPin == 8) {
            x = true;
        }
    }

    document.getElementById("pin").src = pin[curPin].src;
}

最佳答案

在 if 语句的 x == true 部分,您应该将 curPin 设置为 1,否则您将复制 curPin = 1。

http://jsfiddle.net/A77cx/

function pinF() {

    if (x == true) {
        --curPin;
        if (curPin == 0) {
            curPin = 1;
            x = false;
        }
    }
    if (x == false) {
        ++curPin;
        if (curPin == 8) {
            x = true;
        }
    }

    document.getElementById("pin").src = pin[curPin].src;
}

关于Javascript setInterval 不必要的暂停,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22898350/

相关文章:

javascript - api block 被调用 2 次,导致渲染组件两次,但条件得到正确检查

javascript - 未指定 js 扩展时,Angular2 Typescript 应用程序在组件上抛出 404

javascript - 当脚本位于页面底部时是否需要 "window.onload"?

javascript - 在用户输入的字符串中搜索数组的任意值

javascript - If 语句未在 setInterval 内运行

javascript - JS clearInterval 还是 window.clearInterval?

javascript - 可通过继承观察 knockout

javascript - 使用主页按钮时 iOS 上的页面可见性 API 事件

javascript - 即使已调用clearInterval,interval仍会持续触发

javascript - 运行用户脚本时 setInterval 使我的浏览器崩溃?