Javascript js中的计时动作(每秒帧数)

Javascript js中的计时动作(每秒帧数),javascript,html,jquery,css,Javascript,Html,Jquery,Css,我正在做一个小游戏,我需要做一些动画(比如每秒帧数),到目前为止,我都是自己做的: var loadCount = 0; var ticks = 15; function loadingLoop() { loadCount++; } switch (loadCount) { case 1: $("#img").attr("src", "src/images/cenario/img004.png");

我正在做一个小游戏,我需要做一些动画(比如每秒帧数),到目前为止,我都是自己做的:

var loadCount = 0;
var ticks = 15;


function loadingLoop() {
    loadCount++;
}

switch (loadCount) {
    case 1:
        $("#img").attr("src", "src/images/cenario/img004.png");
        break;
    case 2:
        $("#img").attr("src", "src/images/cenario/img005.png");
        break;
    case 3:
        $("#img").attr("src", "src/images/cenario/img006.png");
        break;
    // etc.... //
}

setInterval(function(){ 
    if (loadCount >= 6 && loadCount <= ticks){
        loadingLoop();
        if (loadCount === ticks) {
            clearInterval();
        }
        console.log(loadCount);
    }
}, 500);

var loadCount=0;
var=15;
函数加载循环(){
loadCount++;
}
开关(装载计数){
案例1:
$(“#img”).attr(“src”、“src/images/cenario/img004.png”);
打破
案例2:
$(“#img”).attr(“src”、“src/images/cenario/img005.png”);
打破
案例3:
$(“#img”).attr(“src”、“src/images/cenario/img006.png”);
打破
//等等//
}
setInterval(函数(){

如果(loadCount>=6&&loadCount,因为图像的编号与loadCount的链接非常清晰,您可以减少所需的代码行。不必在开关中拼写每个实例,您只需使用以下内容:

  $("#img").attr("src", "src/images/cenario/img" + (loadCount+3).toString().padStart(3, '0') + ".png");
padStart
获取一个表示数字的字符串,并在其开头填充一个字符,在本例中,我们要求将0放在前面。3表示我们需要3位数字

我在计时功能中注意到的另一件事是,您不保存设置间隔,但尝试清除设置间隔。根据您尝试执行的操作,您可能需要以下操作:

let interval = setInterval(function(){ 
    if (loadCount >= 6 && loadCount <= ticks){
        loadingLoop();
        if (loadCount === ticks) {
            clearInterval(interval);
        }
        console.log(loadCount);
    }
let interval=setInterval(函数(){

如果(loadCount>=6&&loadCount尝试询问更具体的问题两条注释:预加载图像并使用.show/.hide将其交换-如果它们移动,则移动包装器div而不是img。
clearInterval()
如果您打算声明一些变量,一个没有任何用处的switch语句,并每隔500毫秒调用一个匿名函数,那么这是最好的方法。此代码对于任何其他情况都没有意义。IMHO@Aleksandar这段代码是用来改变背景的,所以设置一个loadCount并按u唱一个开关,每次它在loadCount上达到一个特定的数字,背景就会改变。我试着用一个for-each循环来做这件事,但没有成功。我想知道的是,是否有更好的方法来做,因为到目前为止,它工作得很好,我只想改进它。关于img的提示真的很好,谢谢。关于间隔,我这样做是为了每次间隔发生时,它都会向loadCount添加1。因此loadCount基本上是一种将间隔用作计时器的方法。但问题是它一直在运行,所以:```if(loadCount==ticks){clearInterval(interval);}´´´´´只是我发现的一种控制间隔循环次数的方法。(没有它,间隔就一直循环,并向loadCount添加更多的刻度)嗨,是的,只是你调用clearInterval时没有给它一个要清除的间隔,因此需要记住间隔然后清除它。否则它将永远继续。当然,我会这样做