Javascript 以每秒50次的速度在IE 8中设置间隔缓动

Javascript 以每秒50次的速度在IE 8中设置间隔缓动,javascript,internet-explorer,Javascript,Internet Explorer,现在我有一个弹跳物体的动画,它以每秒20次的速度播放 1000/50 = 20 times a second 代码如下,您可以假设所有变量都已正确初始化 var animation = setInterval(function () { currentFrame++; if (speedX <= 0.0) { clearInterval(animation);

现在我有一个弹跳物体的动画,它以每秒20次的速度播放

    1000/50 = 20 times a second
代码如下,您可以假设所有变量都已正确初始化

        var animation = setInterval(function () {
            currentFrame++;
            if (speedX <= 0.0) {
                clearInterval(animation);
            }
            speedX -= 0.03;
            speedY = (speedY + Math.sqrt((2 * currentFrame) / gravityPull));
            yPosition += speedY;

            if (yPosition > groundY) {
                speedY *= -1;
                yPosition = groundY;
            }
            xPosition += speedX;
            $("#box").offset({ top: yPosition, left: xPosition });

        }, 50);
var animation=setInterval(函数(){
currentFrame++;
如果(speedX groundY){
速度*=-1;
yPosition=groundY;
}
xPosition+=speedX;
$(“#框”).offset({top:yPosition,left:xPosition});
}, 50);
这在IE中创造了一个非常笨拙的性能,尽管Chrome似乎完全可以运行这段代码。事实上,它是如此糟糕,以至于它减慢了计算机的速度


这里有什么问题吗?看起来计算相当简单。。。帧速率不是很高,每秒20帧不是很高,但对于一个不太起伏不定的动画来说仍然足够流畅。

新发现:Internet Explorer太差劲了

嗯,至少IE8及以上。IE9具有良好的性能


setTimeout
setInterval
触发的定时函数的问题在于,浏览器试图在到期时执行函数,但这实际上仅在空闲时才会发生。自从Internet Eplorer新发现以来:Internet Explorer糟透了

嗯,至少IE8及以上。IE9具有良好的性能


setTimeout
setInterval
触发的定时函数的问题在于,浏览器试图在到期时执行函数,但这实际上仅在空闲时才会发生。由于Internet Eplorer可能不足以获得20fps的速度,但是如果丢失了这两个函数调用--$()和.offset()--则可以通过保存对
$(“#框”)的引用来节省一些开销
元素,并通过直接修改其中的
.style.top
.style.left
来操纵位置。这可能不足以获得20fps,但如果丢失这两个函数调用--$()和.offset()--则可以通过保存对
$(“#框”)的引用来节省一些开销
元素,并通过直接修改其中的
.style.top
.style.left
来操纵位置。