際限なく繰り返される背景画像のスクロールについて質問があります。私が抱えている問題は、それが速く始まるが、すぐに遅くなるということです(吃音など)。コードは次のとおりです。
var panoramaTimeOutId = null;
var panoramaPosition = null;
$('.panorama-left').mousedown(function() {
panoramaTimeOutId = setInterval(function(){
panoramaMove(8, 1)
}, 50);
}).bind('mouseup mouseleave', function() {
clearInterval(panoramaTimeOutId);
});
$('.panorama-right').mousedown(function() {
panoramaTimeOutId = setInterval(function(){
panoramaMove(8, 2)
}, 50);
}).bind('mouseup mouseleave', function() {
clearInterval(panoramaTimeOutId);
});
function panoramaMove(amount, direction)
{
var panorama = document.getElementsByClassName('panorama_foto')[0];
if(panoramaPosition == null)
{
panoramaPosition = panorama.style.backgroundPosition;
panoramaPosition = parseInt(panoramaPosition[0].replace("px",""));
}
if(direction == 1)
{
panoramaPosition = panoramaPosition + amount;
panorama.style.backgroundPosition = panoramaPosition+"px";
}
else
{
panoramaPosition = panoramaPosition - amount;
panorama.style.backgroundPosition = panoramaPosition+"px";
}
}
そして、私はすでに最適化のためにいくつかのことを試しました.標準のjavascriptで関数を書くように. panoramaPosition を 1 回だけ計算してから、単純な int のみを含む変数を使用してインクリメントします。それでもまだぐずる。
間隔のタイミングと px の量も変更しようとしましたが、特定のコンピューターではまだ途切れます。たとえば、サイトはタブレットのタブレット用に設計されており、プログラムしていないPCで途切れます。また、タブレットで正しく動作することが必須です。
以下は JSbin の例です: http://jsbin.com/upociv/1/edit
うまくいけば、誰かがこれを最適化する方法についてのヒントや、私がそれを改善する方法についての一般的な提案をしてくれることを願っています.
クイック ノート: iPad (1/2/3) すべての Galaxy タブレット、つまり 8+ Firefox Chrome などでサポートされている必要があります。