Выражения. Методы layer(index) и layer(name) в After Effects

 

 

В Adobe After Effects Метод layer(index) используется в выражениях (Expressions) для обращения к слоям в композиции по их индексу. Индекс — это номер слоя в стеке слоев (Layers panel), где отсчет начинается с 1 (самый верхний слой имеет индекс 1, следующий ниже — 2 и так далее). Это полезно, когда вы хотите динамически связать свойства одного слоя с другим.

Список эффектов и не только After Effects
Выражения After Effects список

Предположим, у вас есть два слоя: «Layer 1» (индекс 1) и «Layer 2» (индекс 2). Вы хотите, чтобы «Layer 2» следовал за позицией «Layer 1».
Выберите «Layer 2».
Откройте свойство Position (Позиция) (нажмите P).
Alt+клик (Windows) или Option+клик (Mac) на секундомере рядом с Position, чтобы открыть поле для выражения.
Введите следующее выражение:

thisComp.layer(1).position;

Теперь позиция «Layer 2» будет точно соответствовать позиции «Layer 1». Здесь thisComp означает «эта композиция», а layer(1) указывает на слой с индексом 1 («Layer 1»).

Если вы хотите, чтобы «Layer 2″ находился на 100 пикселей ниже по оси Y»Layer 1»:

var parentPos = thisComp.layer(1).position;
[parentPos[0], parentPos[1] + 100];

То же можно записать вот так:

Layer2 = thisComp.layer(1).position;
[Layer2[0] + 300, Layer2[1]];

Если вы хотите привязать свойство к слою, который находится прямо над текущим слоем:

thisComp.layer(index — 1).position + 200;

Здесь index — это встроенная переменная, которая автоматически определяет индекс текущего слоя. Например, если вы применяете это выражение к «Layer 3» (индекс 3), оно обратится к «Layer 2» (индекс 2).

Если слой с указанным индексом не существует (например, layer(5) в композиции с 3 слоями), вы получите ошибку.

Чтобы избежать ошибок, можно добавить проверку, но это уже более сложные выражения.
Индексы слоев меняются, если вы перетаскиваете слои в панели слоев, поэтому лучше использовать имена слоев (thisComp.layer(«Layer Name»)), если порядок может измениться.

——————————

В Adobe After Effects выражение layer(name) используется в скриптах или выражениях (expressions) для обращения к конкретному слою в композиции по его имени. Это полезно, когда вы хотите связать свойства одного слоя с другим или управлять ими программно.

Предположим, у вас есть два слоя в композиции:
Слой «Пусто 1» (например, нулевой объект или слой с настройками).
Слой «Слой-фигура 1» ( который будет двигаться).
Вы хотите, чтобы позиция слоя «Слой-фигура 1» зависела от позиции слоя «Пусто 1».
Шаги:
Выделите слой «Слой-фигура 1».
Откройте свойство Position (Позиция) в таймлайне (нажмите P).
Нажмите Alt (Windows) или Option (Mac) и щелкните на секундомер рядом с «Position», чтобы открыть поле для ввода выражения.
Введите следующее выражение

thisComp.layer(«Пусто 1»).transform.position;

thisComp — обращение к текущей композиции.
layer(«Пусто 1») — указывает на слой с именем «Пусто 1».
transform.position — возвращает значение позиции слоя «Пусто 1».

Если вы хотите, чтобы «Слой-фигура 1» следовал за «Пусто 1», но с небольшим смещением, например, на 200 пикселей вправо, можно изменить выражение:

var Пусто = thisComp.layer(«Пусто 1»).transform.position;
[Пусто[0] + 200, Пусто[1]];

Пусто[0] — это X-координата.
Пусто[1] — это Y-координата.
Мы добавляем 200 к X, чтобы сместить «Слой-фигура 1» вправо.

Имя слоя в layer(«Имя») чувствительно к регистру и должно точно совпадать с тем, как слой назван в композиции.
Если слой с указанным именем не найден, After Effects выдаст ошибку.

————————————-

Создайте текстовый слой.
В свойствах текстового слоя выберите параметр «Source Text» (Исходный текст).
Нажмите Alt (Windows) или Option (Mac) и кликните на значок секундомера рядом с «Source Text», чтобы добавить выражение.
Введите следующее выражение:

xPosition = thisComp.layer(«Слой-фигура 1»).transform.position[0]; // Получаем значение позиции по оси X
«X» + » — » + Math.round(xPosition) + » px»; // Возвращаем значение в виде текста

Это выражение будет отображать текущее положение слоя «Слой-фигура 1» по оси X в текстовом слое.

yPosition = thisComp.layer(«Слой-фигура 1»).transform.position[1]; // Получаем значение позиции по оси Y
«Y» + » — » + Math.round(yPosition) + » px»; // Возвращаем значение в виде текста

Это выражение будет отображать текущее положение слоя «Слой-фигура 1» по оси Y в текстовом слое.

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