Выражения. Операторы & и && 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 {
«Условие не выполнено»;
}