0

如果keyPressed事件是 27 通过按“esc”,它将一次打印与 varconsole.log("ESCY");一样多的次数loopcnt

    loopcnt = 0;
var fps = 22;
var interval = 1000 / fps;

function draw()
{
    setTimeout(function() 
    {

        if (willAnimate)
        {
            window.requestAnimationFrame(draw);
            console.log("Framecnt: "+ loopcnt);
            loopcnt++;

        }

        IndexJSON.each(function(key, value){ IndexOBJECT[key].render(); });

        $(window).delegate('body', 'keydown', function(event){
            keyPressed = event.which;
            if (keyPressed == 27)
            {
                willAnimate = false;
                console.log("ESCY");
            }           
        }); 
    }, interval);
};

willAnimate = true;
draw();

如果你问我,这没有逻辑意义......

就好像它正在缓冲所有的console.logs,直到if语句为真..

知道为什么会这样吗?

(还有另一个问题:我尝试用 取消setTimeout函数return,但它不会终止函数,可能是因为return只会从 if 语句返回,但有没有办法从外部终止函数?)

4

1 回答 1

0

好的,显然当我将 .delegate 移到 setTimeout() 之外时;它不会多次触发 if 语句。

而且,我现在意识到,每次循环循环时我都会绑定键,因此当我按下键时,它将触发所有绑定..

现在想想就很明显了……

于 2012-07-25T10:55:19.163 回答