AnimationActions планируют выполнение анимаций, которые хранятся в AnimationClips.
Большинство методов AnimationAction можно объединять в цепочку.
Обзор элементов анимационной системы «Вердж3Д» находится в разделе Анимационная система настоящего руководства.
AnimationMixer
, который управляется этим действием.AnimationClip
, который содержит данные анимации для этого действия.Вместо прямого вызова этого конструктора следует создать AnimationAction с помощью функции AnimationMixer.clipAction, поскольку этот метод обеспечивает кэширование для повышения производительности.
Определяет как анимация смешивается/соединяется, когда две или более анимаций проигрываются одновременно. Допустимые значения: NormalAnimationBlendMode
(по умолчанию) и AdditiveAnimationBlendMode
.
Если clampWhenFinished
имеет значение true
, анимация будет автоматически поставлена на паузу на последнем кадре.
Если clampWhenFinished
установлено в false
, свойство enabled будет автоматически переключено в false
после завершения последнего цикла действия, так что это действие не будет иметь дальнейшего влияния.
Значение по умолчанию — false
.
clampWhenFinished
не имеет никакого влияния, если действие прервано (оно имеет эффект только в том случае, если его последний цикл действительно завершился).
Установка enabled
в false
отключает действие, так чтобы оно не оказывало влияния влияния. По умолчанию true
.
Когда действие снова включено, анимация продолжается с текущего времени (установка enabled
в false
не сбрасывает действие).
Установка значения enabled
в true
не приводит к автоматическому перезапуску анимации. Установка enabled
в true
немедленно перезапустит анимацию, только если выполняется следующее условие: paused равно false
, это действие не было деактивировано (выполнением команды stop или reset), и ни weight, ни timeScale не равны 0
.
Режим зацикливания (можно изменить с помощью setLoop). По умолчанию v3d.LoopRepeat (c бесконечным числом повторений).
Должен быть одной из этих констант:
repetitions
, каждый раз переходя от конца клипа непосредственно к его началуrepetitions
, поочередное воспроизведение вперед и назад
Установка paused
в true
приостанавливает выполнение действия, устанавливая шкалу эффективного времени на 0
. По умолчанию false
.
Количество повторений выполняемой AnimationClip в течение этого действия. Может быть задано через setLoop. По умолчанию Infinity
.
Установка этого числа не имеет эффекта, если для параметра loop mode установлено значение v3d.LoopOnce.
Локальное время этого действия (в секундах, начиная с 0
).
Значение обрезается или оборачивается до 0...clip.duration
(в зависимости от состояния цикла). Оно может быть масштабировано относительно глобального микшера времени путем изменения timeScale (с помощью setEffectiveTimeScale или setDuration).
Коэффициент масштабирования для time. При значении 0
анимация приостанавливается. Отрицательные значения заставляют анимацию воспроизводиться в обратном направлении. По умолчанию используется значение 1
.
Свойствами/методами, относящимися к timeScale
(соответственно time
), являются: getEffectiveTimeScale, halt, paused, setDuration, setEffectiveTimeScale, stopWarping, syncWith, warp.
Локальное время начала этого действия (в секундах). Используйте вместе с AnimationClip.duration для установки диапазона воспроизведения.
Степень влияния данного действия (в интервале [0, 1]
). Значения от 0
(нет влияния) до 1
(полное влияние) могут использоваться для смешивания нескольких действий. По умолчанию - 1
.
Свойствами/методами, относящимися к weight
, являются: crossFadeFrom, crossFadeTo, enabled, fadeIn, fadeOut, getEffectiveWeight, setEffectiveWeight, stopFading.
Включает плавную интерполяцию без отдельных клипов для начала, цикла и конца. По умолчанию true
.
Включает плавную интерполяцию без отдельных клипов для начала, цикла и конца. По умолчанию true
.
Вызывает это действие fade in, одновременно затухая в другом действии в течение заданного интервала времени. Этот метод можно объединить в цепочку.
Если warpBoolean
равен true
, будет применён дополнительный warping (постепенное изменение временных масштабов).
Как и в случае fadeIn
/fadeOut
, затухание начинается/заканчивается с весом 1
.
Вызывает это действие fade out, одновременно затухая в другом действии в течение заданного интервала времени. Этот метод можно объединить в цепочку.
Если warpBoolean
равен true
, будет применён дополнительный warping (постепенное изменение временных масштабов).
Как и в случае fadeIn
/fadeOut
, затухание начинается/заканчивается с весом 1
.
Увеличивает weight этого действия постепенно от 0
до 1
, в течение заданного интервала времени. Этот метод можно объединить в цепочку.
Уменьшает weight этого действия постепенно от 1
до 0
, в течение заданного интервала времени. Этот метод можно объединить в цепочку.
Возвращает эффективную шкалу времени (учитывая текущие состояния искривления и paused).
Возвращает эффективный вес (с учетом текущих состояний затухания и enabled).
Возвращает клип, содержащий данные анимации для этого действия.
Возвращает микшер, который отвечает за воспроизведение этого действия.
Возвращает корневой объект, над которым выполняется данное действие.
Замедляет скорость этой анимации до 0, постепенно уменьшая timeScale (начиная с его текущего значения) в течение переданного интервала времени. Этот метод может быть соединен в цепочку.
Возвращает true
, если действие time в данный момент выполняется.
Помимо активации в микшере (смотрите isScheduled) должны выполняться следующие условия: paused равно false, enabled равно true, timeScale не равно 0, и нет планирования для отложенного старта (startAt).
Если isRuning
равно true
, это не обязательно означает, что анимацию можно увидеть. Это происходит только в том случае, если weight дополнительно имеет ненулевое значение.
Возвращает true
, если это действие активировано в микшере.
Это не обязательно означает, что анимация действительно запущена (сравните дополнительные условия для isRunning).
Приказывает микшеру активировать действие. Этот метод может быть соединен в цепочку.
Активация этого действия не обязательно означает, что анимация начнется немедленно: Если действие уже завершилось ранее (дойдя до конца своего последнего цикла), или если было установлено время отложенного старта (через startAt), сначала должно быть выполнено reset. Некоторые другие настройки (paused=true, enabled=false, weight=0, timeScale=0) также могут предотвратить воспроизведение анимации.
Сбрасывает действие. Этот метод можно объединить в цепочку.
Этот метод устанавливает paused в false
, enabled в true
, time в 0
, прерывает любое запланированное затухание и искривление, и удаляет внутренний счетчик циклов и планирование для отложенного запуска.
.reset всегда вызывается stop, но .reset
не вызывает сам .stop
. Это означает: если вам необходимы и сброс, и остановка одновременно — не вызывайте .reset
; вместо этого вызовите .stop
.
Устанавливает продолжительность одного цикла этого действия (регулируя timeScale и останавливая любое запланированное искривление). Этот метод может быть соединен в цепочку.
Устанавливает timeScale и останавливает любое запланированное искривление. Этот метод может быть соединен в цепочку.
Если paused равно false, шкала эффективного времени (внутреннее свойство) также будет установлена в это значение; в противном случае шкала эффективного времени (непосредственно влияющая на анимацию в данный момент) будет установлена в 0.
.paused не будет автоматически переключен на true
, если .timeScale
установлен в 0
этим методом.
Устанавливает вес weight и останавливает любое запланированное затухание. Этот метод можно объединить в цепочку.
Если enabled равно true, эффективный вес (внутреннее свойство) также будет установлен этому значению; в противном случае эффективный вес (непосредственно влияющий на анимацию в данный момент) будет установлен в 0
.
.enabled не будет автоматически переключен на false
, если .weight
установлен в 0
этим методом.
Устанавливает режим loop и количество повторений repetitions. Этот метод можно объединить в цепочку.
Определяет время отложенного старта (обычно передается как AnimationMixer.time + deltaTimeInSeconds). Этот метод может быть соединен в цепочку.
Примечание: Анимация начнется только в указанное время, если .startAt
связан цепочкой с play, или если действие уже было активировано в микшере (предыдущим вызовом .play
, без остановки или сброса в это время).
Сообщает микшеру о необходимости деактивировать это действие. Этот метод может быть соединен в цепочку.
Действие будет немедленно остановлено и полностью сброшено.
Вы можете остановить все активные действия на одном микшере за один раз с помощью mixer.stopAllAction.
Останавливает все запланированные fading, которые применяются к этому действию. Этот метод может быть цепочкой.
Останавливает любое запланированное warping, которое применяется к этому действию. Этот метод может быть цепочкой.
Синхронизирует это действие с переданным другим действием. Этот метод может быть соединен в цепочку.
Синхронизация выполняется путем установки значений time и timeScale этого действия на соответствующие значения другого действия (останавливая любое запланированное искривление).
Примечание: Будущие изменения time
и timeScale
другого действия не будут обнаружены.
Изменяет скорость воспроизведения в пределах заданного интервала времени, постепенно изменяя 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
Вместо вызовов АПИ AnimationAction вы можете использовать анимационные пазлы.
О том как получить исходный код этого модуля читайте тут.