AnimationAction

AnimationActions планируют выполнение анимаций, которые хранятся в AnimationClips.

Примечание: Большинство методов AnimationAction можно объединить в цепочку.

Обзор различных элементов системы анимации Verge3D смотрите в статье "Animation System" в разделе "Next Steps" руководства.

Конструктор

AnimationAction(mixer : AnimationMixer, clip : AnimationClip, localRoot : Object3D)

mixer - AnimationMixer, который управляется этим действием.
clip - AnimationClip, который содержит данные анимации для этого действия.
localRoot — корневой объект, над которым выполняется это действие.

Примечание: Вместо прямого вызова этого конструктора следует создать AnimationAction с помощью функции AnimationMixer.clipAction, поскольку этот метод обеспечивает кэширование для повышения производительности.

Свойства

.clampWhenFinished : Boolean

Если clampWhenFinished имеет значение true, анимация будет автоматически paused на последнем кадре.

Если clampWhenFinished установлено в false, enabled будет автоматически переключено в false после завершения последнего цикла действия, так что это действие не будет иметь дальнейшего влияния.

По умолчанию false.

Примечание: clampWhenFinished не имеет никакого влияния, если действие прервано (оно имеет эффект только в том случае, если его последний цикл действительно завершился).

.enabled : Boolean

Установка enabled в false отключает это действие, так что оно не оказывает никакого влияния. По умолчанию true.

Когда действие снова включено, анимация продолжается с текущего time time (установка enabled в false не сбрасывает действие).

Примечание: Установка значения enabled в true не приводит к автоматическому перезапуску анимации. Установка enabled в true немедленно перезапустит анимацию, только если выполняется следующее условие: paused равно false, это действие не было деактивировано (выполнением команды stop или reset), и ни weight, ни timeScale не равны 0.

.loop : Number

Режим зацикливания (можно изменить с помощью setLoop). По умолчанию v3d.LoopRepeat (with an infinite number of repetitions)

Должна быть одной из этих констант:

v3d.LoopOnce — воспроизведение клипа один раз,
v3d.LoopRepeat — воспроизведение клипа с выбранным числом repetitions, каждый раз переходя от конца клипа непосредственно к его началу,
v3d.LoopPingPong — воспроизведение ролика с выбранным количеством repetitions, поочередное воспроизведение вперед и назад.

.paused : Boolean

Установка paused в true приостанавливает выполнение действия, устанавливая шкалу эффективного времени на 0. По умолчанию false.

.repetitions : Number

Количество повторений выполняемой AnimationClip в течение этого действия. Может быть задано через setLoop. По умолчанию Infinity.

Установка этого числа не имеет эффекта, если для параметра loop mode установлено значение v3d.LoopOnce.

.time : Number

Местное время этого действия (в секундах, начиная с 0).

Значение обрезается или оборачивается до 0...clip.duration (в зависимости от состояния цикла). Оно может быть масштабировано относительно глобального микшера времени путем изменения timeScale (с помощью setEffectiveTimeScale или setDuration).

.timeScale : Number

Коэффициент масштабирования для time. При значении 0 анимация приостанавливается. Отрицательные значения заставляют анимацию воспроизводиться в обратном направлении. По умолчанию - 1.

Свойства/методы, относящиеся к timeScale (соответственно time), являются: getEffectiveTimeScale, halt, paused, setDuration, setEffectiveTimeScale, stopWarping, syncWith, warp.

.timeStart : Number

Локальное время начала этого действия (в секундах). Используйте вместе с AnimationClip.duration для установки диапазона воспроизведения.

.weight : Number

Степень влияния данного действия (в интервале [0, 1]). Значения от 0 (нет влияния) до 1 (полное влияние) могут использоваться для смешивания нескольких действий. По умолчанию - 1.

Свойства/методы, касающиеся weight, являются: crossFadeFrom, crossFadeTo, enabled, fadeIn, fadeOut, getEffectiveWeight, setEffectiveWeight, stopFading.

.zeroSlopeAtEnd : Boolean

Включает плавную интерполяцию без отдельных клипов для начала, цикла и конца. По умолчанию true.

.zeroSlopeAtStart : Boolean

Включает плавную интерполяцию без отдельных клипов для начала, цикла и конца. По умолчанию true.

Методы

.crossFadeFrom(fadeOutAction : AnimationAction, durationInSeconds : Number, warpBoolean : Boolean) → AnimationAction

Вызывает это действие fade in, одновременно затухая в другом действии в течение заданного интервала времени. Этот метод можно объединить в цепочку.

Если warpBoolean равен true, будет применена дополнительная warping (постепенное изменение временных масштабов).

Примечание: Как и в случае fadeIn/fadeOut, затухание начинается/заканчивается с весом 1.

.crossFadeTo(fadeInAction : AnimationAction, durationInSeconds : Number, warpBoolean : Boolean) → AnimationAction

Вызывает это действие fade out, одновременно затухая в другом действии в течение заданного интервала времени. Этот метод можно объединить в цепочку.

Если warpBoolean равен true, то дополнительная warping (постепенное изменение временных масштабов) будет применено.

Примечание: Как и в случае fadeIn/fadeOut, затухание начинается/заканчивается с весом 1.

.fadeIn(durationInSeconds : Number) → AnimationAction

Увеличивает weight этого действия постепенно от 0 до 1, в течение заданного интервала времени. Этот метод можно объединить в цепочку.

.fadeOut(durationInSeconds : Number) → AnimationAction

Уменьшает weight этого действия постепенно от 1 до 0, в течение заданного интервала времени интервал. Этот метод можно объединить в цепочку.

.getEffectiveTimeScale() → Number

Возвращает эффективную шкалу времени (учитывая текущие состояния искривления и paused).

.getEffectiveWeight() → number

Возвращает эффективный вес (с учетом текущих состояний затухания и enabled).

.getClip() → AnimationClip

Возвращает клип, содержащий данные анимации для этого действия.

.getMixer() → AnimationMixer

Возвращает микшер, который отвечает за воспроизведение этого действия.

.getRoot() → Object3D

Возвращает корневой объект, над которым выполняется данное действие.

.halt(durationInSeconds : Number) → AnimationAction

Замедляет скорость этой анимации до 0, постепенно уменьшая timeScale (начиная с его текущего значения) в течение переданного интервала времени. Этот метод может быть соединен в цепочку.

.isRunning() → Boolean

Возвращает true, если действие time в данный момент выполняется.

Помимо активации в микшере (смотрите isScheduled) должны выполняться следующие условия: paused равно false, enabled равно true, timeScale не равно 0, и нет планирования для отложенного старта (startAt).

Примечание: то, что isRuning* равно true, не обязательно означает, что анимацию можно увидеть. Это происходит только в том случае, если weight дополнительно имеет ненулевое значение.

.isScheduled() → Boolean

Возвращает true, если это действие активировано в микшере.

Примечание: это не обязательно означает, что анимация действительно запущена (сравните дополнительные условия для isRunning).

.play() → AnimationAction

Приказывает микшеру активировать действие. Этот метод может быть соединен в цепочку.

Примечание: Активация этого действия не обязательно означает, что анимация начнется немедленно: Если действие уже завершилось ранее (дойдя до конца своего последнего цикла), или если было установлено время отложенного старта (через startAt), сначала должно быть выполнено reset. Некоторые другие настройки (paused=true, enabled=false, weight=0, timeScale=0) также могут предотвратить воспроизведение анимации.

.reset() → AnimationAction

Сбрасывает действие. Этот метод можно объединить в цепочку.

Этот метод устанавливает paused в false, enabled в true, time в 0, прерывает любое запланированное затухание и искривление, и удаляет внутренний счетчик циклов и планирование для отложенного запуска.

Примечание: .reset всегда вызывается stop, но .reset не вызывает сам .stop. Это означает: Если вам необходимы и сброс, и остановка одновременно - не вызывайте .reset; вместо этого вызовите .stop.

.setDuration(durationInSeconds : Number) → AnimationAction

Устанавливает продолжительность одного цикла этого действия (регулируя timeScale и останавливая любое запланированное искривление). Этот метод может быть соединен в цепочку.

.setEffectiveTimeScale(timeScale : Number) → AnimationAction

Устанавливает timeScale и останавливает любое запланированное искривление. Этот метод может быть соединен в цепочку.

Если paused равно false, шкала эффективного времени (внутреннее свойство) также будет установлена в это значение; в противном случае шкала эффективного времени (непосредственно влияющая на анимацию в данный момент) будет установлена в 0.

Примечание: .paused не будет автоматически переключен на true, если .timeScale установлен в 0 этим методом.

.setEffectiveWeight(weight : Number) → AnimationAction

Устанавливает вес weight и останавливает любое запланированное затухание. Этот метод можно объединить в цепочку.

Если enabled равно true, эффективный вес (внутреннее свойство) также будет установлен этому значению; в противном случае эффективный вес (непосредственно влияющий на анимацию в данный момент) будет установлен в 0.

Примечание: .enabled не будет автоматически переключен на false, если .weight установлен в 0 этим методом.

.setLoop(loopMode : Number, repetitions : Number) → AnimationAction

Устанавливает режим loop и количество повторений repetitions. Этот метод можно объединить в цепочку.

.startAt(startTimeInSeconds : Number) → AnimationAction

Определяет время отложенного старта (обычно передается как AnimationMixer.time + deltaTimeInSeconds). Этот метод может быть соединен в цепочку.

Примечание: Анимация начнется только в указанное время, если .startAt связан цепочкой с play, или если действие уже было активировано в микшере (предыдущим вызовом .play, без остановки или сброса в это время).

.stop() → AnimationAction

Сообщает микшеру о необходимости деактивировать это действие. Этот метод может быть соединен в цепочку.

Действие будет немедленно остановлено и полностью reset.

Примечание: Вы можете остановить все активные действия на одном микшере за один раз с помощью mixer.stopAllAction.

.stopFading() → AnimationAction

Останавливает все запланированные fading, которые применяются к этому действию. Этот метод может быть цепочкой.

.stopWarping() → AnimationAction

Останавливает любое запланированное warping, которое применяется к этому действию. Этот метод может быть цепочкой.

.syncWith(otherAction : AnimationAction) → AnimationAction

Синхронизирует это действие с переданным другим действием. Этот метод может быть соединен в цепочку.

Синхронизация выполняется путем установки значений time и timeScale этого действия на соответствующие значения другого действия (останавливая любое запланированное искривление).

Примечание: Будущие изменения time и timeScale другого действия не будут обнаружены.

.warp(startTimeScale : Number, endTimeScale : Number, durationInSeconds : Number) → AnimationAction

Изменяет скорость воспроизведения в пределах заданного интервала времени, постепенно изменяя timeScale от startTimeScale до endTimeScale. Этот метод можно объединить в цепочку.

События

Есть два события, указывающие на завершение одного цикла действия, соответственно, всего действия. Вы можете реагировать на них с помощью:

mixer.addEventListener('loop', function(e) { …}); // properties of e: type, action and loopDelta mixer.addEventListener('finished', function(e) { …}); // properties of e: type, action and direction

Исходный файл

О том как получить исходный код этого модуля читайте тут.