1

マウスの位置にゆっくりと追従する div がいくつかあります。最初はうまくいきますが、マウスの位置に近づくほど遅くなります。以下に非常に効率的なコードを示しますが、div が変化する速度ではなく常に一定の速度でマウスに追従するように改善したいと考えています。

var xp = x, yp = y;
var loop = setInterval(function(){
xp += ((mouseX - xp) ) / 100;
yp += ((mouseY - yp)) / 100;
object.css({left:xp, top:yp});
},20);}

近づくと100で割るので、数学が小さくなり、X / Yの動きが遅くなります。どこから来ても同じ速度を維持したい。

4

2 に答える 2

2

解決策は次のとおりです。

var loop = setInterval(
    function()
    {
        speed = 20;
        xp += (mouseX - xp)>speed ? speed : ((mouseX - xp)<-speed ? -speed : (mouseX - xp));
        yp += (mouseY - yp)>speed ? speed : ((mouseY - yp)<-speed ? -speed : (mouseY - yp));
        object.css({left:xp, top:yp});
    },20
);
于 2012-05-08T21:53:11.310 に答える
0

Web ワーカーを使用してみましたか?

Web ワーカーを使用すると、「重い」タスクを送信してバックグラウンド スレッドで完了することができるため、UI スレッドが遅くならず、Web アプリケーションの応答性が維持されます。

セットアップはとても簡単です。

var worker = new Worker('someWorker.js');

見てください:

https://developer.mozilla.org/En/Using_web_workers

于 2012-05-08T21:46:12.020 に答える