0

keyPressed'esc' を押してイベントが 27の場合、一度console.log("ESCY");に var の数だけ出力されます。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();

私に言わせれば、それは論理的な意味をなさない...

ステートメントが trueconsole.logになるまで、すべての s をバッファリングしているかのようです。if

なぜこれが起こるのか分かりますか?

(そして別の質問: で関数をキャンセルしようとしましたが、setTimeout関数をreturn終了しません。おそらくreturn、if ステートメントからのみ返されるためですが、関数を外部で終了する方法はありますか?)

4

1 に答える 1

0

OK、どうやら .delegate を setTimeout(); の外に移動したときのようです。if ステートメントを複数回トリガーすることはありません。

そして、ループがループするたびにキーをバインドしていることに気づきました。したがって、キーを押すと、すべてのバインドがトリガーされます..

今考えれば当然のことですが…

于 2012-07-25T10:55:19.163 に答える