2015-08-05 1 views
0

Je ne sais pas comment écrire correctement à cette question, la chose est Je veux être en mesure de contrôler deux autres effets par un effet unique comme celui-ci:contrôle d'autres effets dans un seul effet Expression

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; 
}; 

le problème est que d'autres effets (Y et X Displace) Displace ne changent pas, et la valeur de celui-effet où j'écris l'expression prend la valeur de var c au lieu de var a que je veux faire .

J'ai besoin d'écrire une expression dans un seul effet parce que je dois copier la même expression à différentes couches avec le même ensemble d'effets, et il est tout à fait pénible de le personnaliser pour chaque couche.

Répondre

0

Il ne peut pas travailler comme vous voulez: une expression dans une propriété affecte cette propriété et rien d'autre (les variables a, b, c peuvent se référer à d'autres propriétés mais ne modifier leur valeur).

Ainsi, dans la propriété correspondant à 'a' (tu na pas donner son nom) l'expression serait:

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

Et dans la propriété "Y Displace":

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

Etc. Editer: la raison pour laquelle vous obtenez toujours le cas "c" est qu'After Effects conserve la dernière valeur calculée (il calcule a, b, puis c, d'où le résultat est c).