Я пытаюсь создать эффект с помощью svgjs. Этот эффект требует, в моем примере, получить элемент, чтобы перемещаться туда-сюда, слева направо и налево. Я также хочу, чтобы он немного плавал вверх и вниз, а продолжительность анимации вверх-вниз отличалась от левой и правой, поэтому пользователю не кажется очевидным, что есть цикл (т.е. I не хочу, чтобы была одна петля для обеих осей).
Одна вещь, которую я пробовал (r
это rect
):
// horizontal
r.animate({
duration: Math.random() * 4000 + 1000,
swing: true,
times: Number.MAX_SAFE_INTEGER
})
.attr({
x: width - 10
})
// vertical
r.animate({
duration: Math.random() * 4000 + 1000,
swing: true,
times: Number.MAX_SAFE_INTEGER
})
.attr({
y: r.y() + (Math.random() * 250) - 125
})
С этим кодом вертикальная анимация никогда не происходит, потому что она ожидает окончания горизонтальных циклов (что, по сути, никогда не произойдет).
Я также пробовал это:
// horizontal
r.animate({
duration: Math.random() * 4000 + 1000,
swing: true,
times: Number.MAX_SAFE_INTEGER
})
.attr({
x: width - 10,
y: r.y() + (Math.random() * 250) - 125
})
Это работает, новыглядит скучно / неловко, потому что петли прозрачны для зрителя.
(Кстати, если вы можете предложить способ, чтобы эти циклы длились вечно, кроме установки times: Number.MAX_SAFE_INTEGER
, я был бы обязанпотому что это кажется неаккуратным.)