我有一个关于滚动不断重复的背景图像的问题。我遇到的问题是它开始很快但很快变得越来越慢(口吃等)。这是代码:
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 编写函数。仅计算一次全景位置,然后通过仅包含简单 int 的变量对其进行递增。然而它仍然结结巴巴。
我还尝试更改间隔时间和 px 数量,但在某些计算机上仍然卡顿。例如,该网站是为平板电脑上的平板电脑设计的,它在我没有编程的电脑上口吃。它必须在平板电脑上正常工作。
这是一个 JSbin 示例:http: //jsbin.com/upociv/1/edit
希望有人可以提供有关如何优化此功能的提示或一般性建议,我将如何改进它。
快速说明:必须由 Ipad (1/2/3) 所有 Galaxy 平板电脑和 8+ firefox chrome 等支持。