Выражения. Оператор if-else в After Effects

В After Effects оператор if else используется в выражениях (expressions) для создания условий, которые определяют, какое значение или действие должно быть выполнено в зависимости от определенного условия. Оператор if может содержать необязательный блок «else» («иначе»). Он выполняется, когда условие ложно. Но может и не содержать. Используются логические выражения или операторы false фальшиво или true истинно. Блоков else может быть несколько.

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

Вы можете использовать if и else для управления прозрачностью (Opacity) в зависимости от времени:

if (time > 3) {
100; // Полная непрозрачность после 3 секунд
} else {
0; // Полная прозрачность до 3 секунд
}

if (time > 2) {
100; // Полная непрозрачность после 3 секунд
} else {
0; // Полная прозрачность до 3 секунд
}
if (time > 6){
50}; // Прозрачность 50 если время больше 6 секунд

if (time > 2) {
if (time < 5) { 50; // Полупрозрачность между 2 и 5 секундами } else { 100; // Полная непрозрачность после 5 секунд } } else { 0; // Полная прозрачность до 2 секунд } Управление положения слоя в зависимости от времени if (time > 2) {[value[0] + 200, value[1]]; // Двигаем вправо на 100 пикселей
} else {[value[0] — 200, value[1]]; // Двигаем влево на 100 пикселей
}

if (time > 2) {[value[0] + random(300), value[1]]; // Двигаем вправо
} else {[value[0] — random(300), value[1]]; // Двигаем влево
}

time — это встроенная переменная, которая возвращает текущее время на временной шкале в секундах.

value — это массив, который содержит текущие значения свойства (в данном случае, координаты X и Y позиции).

if (time > 2) — условие, которое проверяет, больше ли текущее время 2 секунд.

Если условие истинно, то объект двигается вправо ([value[0] + 100, value[1]]).

Если условие ложно, то объект двигается влево ([value[0] — 100, value[1]]).

Вы также можете использовать тернарный оператор для более компактной записи:

[time > 2 ? value[0] + 100 : value[0] — 100, value[1]]; //Квадратные скобки потому, что выражение для положения. То есть это массив с положением по оси Х и оси У

Это выражение делает то же самое, что и предыдущее, но записано в одну строку.

Тернарный оператор имеет следующий синтаксис:

условие ? значение_если_истина : значение_если_ложь

Этот оператор позволяет вам в одной строке проверить условие и вернуть одно из двух значений в зависимости от того, истинно ли условие или ложно.

Предположим, у вас есть свойство Opacity (непрозрачность), и вы хотите, чтобы оно было 100%, если время (time) больше 2 секунд, и 50% в противном случае. Вы можете написать такое выражение:

time > 2 ? 100 : 50

Это выражение проверяет, больше ли текущее время (time) 2 секунд. Если да, то возвращается значение 100, иначе — 50.

Если вы хотите, чтобы масштаб (Scale) слоя увеличивался до 150%, если позиция по X больше 500, и оставался 100% в противном случае, вы можете написать:

position[0] > 500 ? [150, 150] : [100, 100]

Здесь position[0] — это координата X позиции слоя. Если она больше 500, масштаб устанавливается на [150, 150], иначе — на [100, 100].

Тернарный оператор удобен для простых условий, но для более сложной логики может быть лучше использовать if…else или другие конструкции.

Предположим, у вас есть свойство Position (Позиция), и вы хотите, чтобы объект двигался вправо, если значение другого свойства (например, Slider Control) больше 50, и влево, если оно меньше или равно 50.

if (effect(«Slider Control»)(«Slider») > 50) {[value[0] + 100, value[1]]; // Двигаемся вправо
} else {[value[0] — 100, value[1]]; // Двигаемся влево
}

var temp = thisComp.layer(«Корректирующий слой 3»).effect(«Элемент управления «Ползунок»»)(«Ползунок»);
if (temp > 50) {[value[0] + 100, value[1]]; // Двигаемся вправо
} else {[value[0] — 100, value[1]]; // Двигаемся влево
}

effect(«Slider Control»)(«Slider») — это обращение к значению слайдера.

value[0] и value[1] — это текущие значения координат X и Y свойства Position.

Если значение слайдера больше 50, объект будет двигаться вправо (увеличивается координата X на 100).

Если значение слайдера меньше или равно 50, объект будет двигаться влево (уменьшается координата X на 100).

Выражения могут быть применены к любому свойству слоя, которое поддерживает выражения (например, Position, Opacity, Scale и т.д.).

Вы можете использовать вложенные if-else для более сложных условий.