Движки выражений в After Effects: чем JavaScript отличается от Legacy ExtendScript
Выражение — это код на JavaScript.
Но в After Effects два движка, и от выбора зависит, что именно выполнится.
Что сказано в документации
Документация: After Effects использует движок JavaScript при вычислении выражений. На Windows это движок V8.
Отдельно упоминается, что оценка выражений при рендере может идти до пяти раз быстрее, чем на старом движке Legacy ExtendScript.
Второй движок
Legacy ExtendScript — старый движок. Документация: он поддерживает только третью редакцию стандарта ECMA-262.
JavaScript-движок в After Effects 16.0 основан на ECMAScript 2018.
Практика: разница в версии стандарта — это разница в доступном синтаксисе. Стрелочные функции, let и const, шаблонные строки в старом движке не работают.
Где переключатель
Документация: File → Project Settings, вкладка Expressions, поле Expressions Engine.
Значения: JavaScript или Legacy ExtendScript.
Практика: настройка живёт в проекте, а не в программе. Разные проекты могут открываться с разными движками.
Что происходит со старыми проектами
Документация прямо указывает: проекты, сохранённые в предыдущих версиях After Effects, по умолчанию открываются на Legacy ExtendScript.
Практика: это самая частая причина, по которой старое выражение вдруг «не понимает» новый синтаксис. Дело не в ошибке, а в движке.
Как перейти
- Откройте Project Settings.
- Перейдите на вкладку Expressions.
- Выберите JavaScript.
- Проверьте все выражения в проекте.
- Исправьте те, что используют старый синтаксис.
Практика: шаг 4 не пропускайте. Переключение движка может сломать выражения, которые писались под старый.
Что ломается чаще всего
Практика: обычно страдают три вещи.
Первое — обращение к свойствам через конструкции, которых в новом стандарте нет или они ведут себя иначе. Второе — старые трюки с массивами. Третье — неявные приведения типов.
Документация по синтаксическим различиям существует именно потому, что такие места встречаются.
Обратный переход
Практика: вернуться на Legacy можно так же, через Project Settings.
Это полезно, когда нужно открыть проект с чужими выражениями и нет времени их переписывать. Но как постоянная настройка это плохой выбор: новые возможности недоступны.
Скорость
Практика: ускорение при рендере — не маркетинг, а следствие другого движка.
На проектах с десятком тяжёлых выражений разница заметна. На двух простых — нет.
Практика: если выражений много и они тяжёлые, движок стоит проверить в первую очередь, до покупки железа.
Где искать ошибки
Практика: сообщение об ошибке появляется прямо у свойства.
Красный значок у выражения — сигнал, что движок не смог его вычислить. Дальше стоит смотреть текст ошибки, а не угадывать.
Документация по основам выражений описывает и панель, и меню языка выражений: часть проблем решается вставкой элемента из меню вместо ручного набора.
Практические правила
Новый проект — новый движок. Начинайте на JavaScript.
Старый проект — проверка. Перед переключением просмотрите выражения.
Одно выражение — один стиль. Не смешивайте синтаксис 2018 года и трюки из ExtendScript.
Ошибка — в текст. Читайте сообщение, а не гадайте.
FAQ
Сколько движков выражений?
Два: JavaScript и Legacy ExtendScript.
Где их переключать?
File → Project Settings → Expressions.
На чём основан JavaScript-движок?
На ECMAScript 2018; на Windows используется V8.
Что происходит со старыми проектами?
Они открываются на Legacy ExtendScript.
Быстрее ли новый движок?
Документация упоминает ускорение оценки при рендере до пяти раз.
Выражения и скрипты — не одно и то же
Практика: движок выражений и движок скриптов — разные вещи.
Выражения живут на свойствах и вычисляются постоянно. Скрипты запускаются один раз и работают с проектом. У них разные области применения, и переключение движка выражений не меняет поведение скриптов.
Практика: если скрипт перестал работать после обновления, ищите причину в скриптах, а не в Project Settings.
Что проверить при передаче проекта
Практика: перед передачей проекта другому человеку зафиксируйте движок.
Если проект собран на JavaScript, а у коллеги по умолчанию открывается Legacy, выражения могут отображаться с ошибкой. Это выглядит как поломка проекта, хотя дело в настройке.
Практика: в описании проекта достаточно одной строки — на каком движке он собран.
Частые ошибки синтаксиса
Практика: три конструкции встречаются чаще остальных.
Стрелочные функции, объявление переменных через const, шаблонные строки с обратными кавычками. Всё это относится к более новому стандарту и в Legacy не работает.
Практика: если нужно, чтобы выражение работало в обоих движках, пишите в старом синтаксисе. Ограничение неприятное, но совместимость сохраняется.
Где это заметно на практике
Практика: быстрее всего разница проявляется на тексте и массивах.
Выражения, собирающие строку из нескольких значений, на новом движке пишутся короче. Выражения, работающие с массивами координат, на старом движке требуют более громоздких конструкций.
Практика: если вы копируете фрагменты из старых обучающих материалов, они чаще всего написаны под Legacy. Это не значит, что они плохие — просто их синтаксис соответствует другому стандарту.
Порядок миграции
Практика: переводить проект лучше по одному свойству.
Сначала переключите движок на копии проекта, затем пройдите список выражений. Ошибки будут видны сразу: свойство подсвечивается, вычисление не выполняется.
Практика: не начинайте миграцию на проекте, который нужно сдавать сегодня. Откат возможен, но время на проверку всё равно понадобится.
Итог
Движок выражений выбирается в Project Settings и хранится вместе с проектом.
Практика: новые проекты — на JavaScript, старые открываются на Legacy и требуют проверки. Ошибка в выражении после переключения — не поломка, а несовпадение стандартов.
Почему ошибки иногда появляются не сразу
Практика: выражение вычисляется по кадрам.
Если конструкция несовместима, ошибка возникает при первом же вычислении — то есть сразу при открытии. Отложенные ошибки обычно связаны не с движком, а с данными: пустой слой, отсутствующий эффект, другое имя.
Практика: читайте текст ошибки буквально. Он указывает на конкретное место, а не на «движок вообще».
Небольшая проверка перед сдачей
Практика: пролистайте проект на предмет красных значков у выражений.
Один проход по таймлайну занимает минуту и снимает риск получить проект, который у коллеги выглядит иначе. Это же стоит делать после обновления After Effects.