GSAP (GreenSock Animation Platform) предоставляет мощные инструменты для анимации, включая удобные способы работы со случайными значениями. Использование random values позволяет создавать динамичные, непредсказуемые эффекты, что особенно полезно для интерфейсов, игр, визуализаций и интерактивных сцен.
gsap.utils.random()Основной инструмент для работы со случайными значениями в GSAP —
функция gsap.utils.random(). Она позволяет получать числа,
строки или выбирать элементы из массива с равномерной или распределенной
случайностью.
Синтаксис:
gsap.utils.random(min, max, rounding, true/false)
Math.round, Math.floor), необязательный
параметрtrue) или число с плавающей точкой
(false, значение по умолчанию)Примеры использования:
gsap.utils.random(0, 100); // случайное число от 0 до 100
gsap.utils.random(0, 10, Math.floor); // случайное целое число от 0 до 10
Для получения случайного элемента массива:
const colors = ["red", "green", "blue"];
gsap.utils.random(colors); // случайный элемент массива
Если массив содержит объекты или строки,
gsap.utils.random() вернёт случайный элемент с
равной вероятностью.
Случайные значения особенно полезны при работе с анимациями, где нужно создавать эффект «живости» объектов. Например, можно анимировать множество элементов с различными параметрами:
gsap.to(".box", {
x: () => gsap.utils.random(0, 500), // случайная позиция по X
y: () => gsap.utils.random(0, 300), // случайная позиция по Y
rotation: () => gsap.utils.random(-45, 45), // случайный поворот
duration: 2,
stagger: 0.1
});
Использование функции стрелки позволяет генерировать новое случайное значение для каждого элемента при каждом запуске анимации.
GSAP позволяет создавать случайные значения с шагом, что особенно удобно для позиционирования объектов на сетке или для дискретных эффектов:
gsap.utils.random(0, 100, 10); // значения: 0, 10, 20, ..., 100
Также возможна генерация случайных значений с нормальным распределением через кастомные функции:
function gaussianRandom(mean = 0, stdDev = 1) {
let u = 0, v = 0;
while(u === 0) u = Math.random();
while(v === 0) v = Math.random();
return mean + stdDev * Math.sqrt(-2.0 * Math.log(u)) * Math.cos(2.0 * Math.PI * v);
}
gsap.to(".circle", {
x: () => gaussianRandom(250, 50), // случайное смещение с нормальным распределением
duration: 1.5
});
modifiersGSAP позволяет использовать случайные значения в сочетании с модификаторами, что даёт полный контроль над динамикой анимации:
gsap.to(".star", {
x: 400,
y: 200,
rotation: 360,
duration: 3,
modifiers: {
rotation: r => r + gsap.utils.random(-15, 15)
}
});
Модификатор применяется каждую кадр-анимации, добавляя элемент непредсказуемости, не нарушая основной логики анимации.
gsap.to(".particle", {
x: () => gsap.utils.random(-200, 200),
y: () => gsap.utils.random(-100, 100),
backgroundColor: () => gsap.utils.random(["#ff0000", "#00ff00", "#0000ff"]),
duration: 2,
repeat: -1,
yoyo: true
});
Функции gsap.utils.random и их сочетание с анимациями и модификаторами позволяют создавать живые, динамичные эффекты без сложной математики. Применение случайности делает сцены более естественными и визуально привлекательными, обеспечивая гибкость и контроль при программировании анимаций.