Выражения. Методы 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 в текстовом слое.
Имя слоя должно быть точным, включая пробелы и регистр.
Если слоев с таким именем несколько, будет выбран первый из них.
Если слой с таким именем не найден, скрипт или выражение выдаст ошибку.