Settimeout连续运行

时间:2014-02-23 06:58:43

标签: javascript

请参阅下面的代码以每秒60帧的速度运行..如果点击任何按钮,isjump将被设置为true,并且代码开始下面。我正在尝试的是我需要退出jump()函数1秒钟之后。我试着像下面那样......但是settime out里面的行仍无限期地运行......请帮助我。

我实际上尝试的是1秒后退出跳跃功能。

function jump() {
    if (isjump) { 
        player.posx +=10;
        console.log("jumping"); //this line is stopped after 1 second
        setTimeout(function () {
            isjump = false;
            console.log("stopped"); //but this line is continuing 
        }, 1000);
    }
}

我也试过clearTimeout仍然没用。

var timeoutHandle = window.setTimeout(function () {
    isjump = false;
    console.log("stopped");
    clearTimeout(timeoutHandle);
}, 500);

编辑:对于那些认为这个跳跃功能被连续调用的人......是的,它被连续调用......对于每个帧游戏,角色位置都会被更新。

1 个答案:

答案 0 :(得分:0)

好的我找到了解决方案..我通过在循环内只运行一次settimeout函数来解决它。

var once = true;
function jump() {
    if (isjump) { 
        player.posx +=10;
        console.log("jumping"); //this line is stopped after 1 second
        if(once)
        {
            setTimeout(function () {
                isjump = false;
                console.log("stopped"); //but this line is continuing 
            }, 1000);
        }
        once = false;
    }
}