Выражения. Операторы & и && After Effects

 

 

В After Effects оператор & амперсанд не является стандартным оператором в выражениях. Используется очень редко.

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

 

 

В After Effects оператор & амперсанд не является стандартным оператором в выражениях. Используется очень редко.

Оператор & — побитовая операция «И» (AND). Он работает только с целыми числами

var a = 5; // 0101 в двоичном виде
var b = 3; // 0011
var c = a & b; // 0001 → 1

//Ошибочное выражение хотя и работает
if (time > 2 & time < 5) {
100;
} else {
0;
}

Вместо логического сравнения получается побитовая операция над результатами value > 5 и value < 10.

//Правильное выражение
if (time > 2 && time < 5) {
100;
} else {
0;
}

 

В After Effects оператор && двойной амперсанд операция логическая, используется в выражениях для выполнения логической операции «И». Оператор && возвращает true, только если оба выражения по обе стороны от него истинны. Если хотя бы одно выражение ложно, то результат — false.

Допустим, вы хотите, чтобы свойство Масштаб изменялось только в том случае, если время композиции больше 2 секунд и меньше 5 секунд.

if (time > 2 && time < 5) {
transform.scale + Math.sin(time * 4) * 100; //Происходит анимация
} else {
transform.scale; // Масштаб не изменяется
}

————
1

Можно использовать && для комбинирования нескольких условий. Например, чтобы масштабировать слой только если его позиция по X больше 500 и позиция по Y меньше 300.

if (position[0] > 500 && position[1] < 300) {
scale = [150, 150]; // Увеличить масштаб
} else {
scale = [100, 100]; // Вернуть к исходному масштабу
}
——
2

Сделать слой видимым только если два других слоя активны их непрозрачность больше 0
//Выражение для свойства Непрозрачность Текстового слоя
if (thisComp.layer(«Слой-фигура 2»).opacity > 0 && thisComp.layer(«Слой-фигура 1»).opacity > 0) {
100; // Непрозрачность 100%
} else {
0; // Непрозрачность 0%
}

——-
3

Изменить текст слоя, если время больше 3 секунд и значение другого свойства например, масштаба больше 100%

if (time > 3 && thisLayer.scale[0] > 100) {
«Условие выполнено»;
} else {
«Условие не выполнено»;
}