在单个效果表达式中控制其他效果

Controlling other effects in a single effect Expression

本文关键字:其他 控制 表达式 单个效      更新时间:2023-09-26

我不知道如何正确地写这个问题,问题是我想通过一个效果来控制另外两个效果,就像这样:

var a=value;
var b=thisLayer.effect("Form")("Y Displace");
var c=thisLayer.effect("Form")("X Displace");
snd=thisComp.layer("Bass").effect("Sound Keys")("Output 1");
if(thisComp.layer("Funcion").effect("On/off Displace")("Slider")==0){
    a=snd*10;
    b=snd*4;
    c=snd*4;
} else {
    a=0;
    b=0;
    c=0;
};

问题是其他效果(Y位移和X位移)没有改变,我写的这个表达式取的是var c的值,而不是我想要的var a的值

我需要在单个效果中编写一个表达式,因为我需要将相同的表达式复制到具有相同效果集的不同图层,并且为每个图层自定义它是相当痛苦的。

它不能像你想的那样工作:属性中的表达式影响该属性而不影响其他属性(变量a, b, c可以引用一些其他属性,但不能修改它们的值)。

那么在与'a'(你没有给出它的名字)对应的属性中,表达式将是:

if(thisComp.layer("Funcion").effect("On/off Displace")("Slider").value==0){
    10*thisComp.layer("Bass").effect("Sound Keys")("Output 1").value;
} else {
    0;
};

在"Y displacement "属性中:

if(thisComp.layer("Funcion").effect("On/off Displace")("Slider").value==0){
    4*thisComp.layer("Bass").effect("Sound Keys")("Output 1").value;
} else {
    0;
};

等。

编辑:为什么你总是得到大小写"c"的原因是After Effects保留了最后计算的值(它计算,a,然后b,然后c,因此结果是c)。