Когда я закомментирую эту строку:
setTimeout(function(){float(!dir)}, 0);
элемент останавливает движение точно на линии, отмеченной It skips here
.
Похоже, что когда вы сбрасываете движение на // avoid exceeding stack
, оно сбрасывает положение элемента в y = 0, в то время как сохраняет значение x элемента также как его путь движения.
Эта гипотеза подтверждается еще и тем, что когда пропускается (где-либо на оси y), элемент всегда возобновляет свое движение с y = 0. Иногда его значение y> y = 0, а иногда
Редактировать
Возвращаясь к демонстрационному синусу source , кажется, что вы можете получить вблизи бесконечной прокрутки, манипулируя строкой x= ...
. Посмотрев на исходный код, выяснилось, что демонстрационный скрипт был написан только для того, чтобы учесть один конкретный пример и проблемы с фиксированной шириной.
Вот рабочий пример.
Управляя числами в строке 1 и 2, вы можете указать количество пикселей для пути перемещения и замедлить путь вниз в строке 3, чтобы сделать его таким же быстрым, что и исходная демонстрация. Итак , не математически бесконечно, но на моем компьютере потребовалось добрых 45 секунд. Управляя этими конкретными линиями, вы можете сделать их настолько «бесконечными», сколько вам нужно.
window.SineWave = SineWave = function() {
this.css = function(p) {
s = Math.sin((p-1)*500); // 1
x = (5000 - p*5000) * 10; // 2
y = s * 100 + 150;
return {top: y + "px", left: x + "px"};
}
}
$("#nyan").stop().animate(
{path: new SineWave},
50000, // 3
"linear"
);