@amperka/animation

Анимации — это объекты, которые полезны для плавного изменения числовых параметров во времени. Например, чтобы медленно изменять угол поворота сервопривода или яркость светодиодной подсветки.

Объект-анимация включает в себя последовательность переходов (transitions), каждый из которых задаёт начальную величину, конечную и длительность преобразования. Набор переходов определяется пользователем библиотеки с помощью метода queue.

Пока осуществляется переход, анимация периодически генерирует событие update, на которое нужно подписаться, чтобы применять вычисленное промежуточное значение к конечному объекту анимации.

var myAnim = require('@amperka/animation').create({
  from: 30,             // анимация от 30
  to: 120,              // до 120
  duration: 4,          // продолжительностью 4 секунды
  updateInterval: 0.02  // с обновлением каждые 20 мс
}).queue({
  to: 90,               // а сразу после этого от 120 до 90
  duration: 1           // продолжительностью 1 секунду
});
 
myAnim.on('update', function(val) {
  // Заставляем по мере обновления анимации поворачиваться сервопривод
  //myServo.write(val);
});
 
myAnim.play();

Функции модуля

create(transition)

Создаёт и возвращает новый объект-анимацию с единственным переходом, заданным transition. В качестве transition принимается объект с полями:

  • from — стартовое значение перехода (0, если не задано);
  • to — конечное значение перехода (1, если не задано);
  • duration — длительность перехода в секундах (1, если не задано);
  • updateInterval — период возникновения события update в секундах (0.01, если не задано);
  • loop — должен ли переход автоматически начинаться сначала, когда завершён (false, если не задано).

После создания анимация не запускается автоматически. Используйте play, чтобы начать проигрывание.

Animation

Класс объекта-анимации. Используйте create, чтобы создать новый экземпляр.

Animation.queue(transition)

Добавляет новый переход transition в конец очереди переходов. Ожидает объект transition подобный тому, что используется в create.

Если какие-то поля не заданы, их значение берётся из последнего перехода в очереди.

Animation.play()

Запускает анимацию. Не имеет эффекта, если анимация уже запущена.

Animation.stop([skip])

Останавливает анимацию. Переводит текущее состояние (курсор) в нулевой момент первого перехода. В качестве аргумента skip принимается true или false. Значение этого аргумента определяет, должно ли возникнуть событие update с конечным значением анимации после остановки (true, если не задано).

Animation.reverse()

Переворачивает последовательность переходов и направление проигрыша.

Animation.on('update', callback)

Возникает раз в updateInterval текущего перехода. Функция callback вызывается с единственным параметром: текущим промежуточным значением анимации.