Skip to main content
brandonb96942845
Inspiring
April 24, 2023
Answered

Help with modifying previous code from Dan Ebberts

  • April 24, 2023
  • 1 reply
  • 688 views

@Dan Ebberts I have to call on your expertise again. Remember when we came up with this:

L = thisComp.layer("Dropdown Menu");
menu = L.effect("Dropdown Menu Control")("Menu");
moveTime = thisComp.layer("Shape Dynamics").effect("Transition Duration (SS)")("Slider");
temp1 = " " + thisProperty.propertyGroup(1).name;
val = value;
if (menu.numKeys > 0){
  n = menu.nearestKey(time).index;
  if (time < menu.key(n).time) n--;
  if (n < 2){
    L1name = L.text.sourceText.valueAtTime(menu.key(1).time);
    val = thisComp.layer(L1name).effect(name + temp1)("Slider").value;
  }else{
    t = menu.key(n).time;
    L1name = L.text.sourceText.valueAtTime(menu.key(n-1).time);
    v1 = thisComp.layer(L1name).effect(name + temp1)("Slider").value;
    L2name = L.text.sourceText.valueAtTime(menu.key(n).time);
    v2 = thisComp.layer(L2name).effect(name + temp1)("Slider").value;
    val = ease(time,t,t + moveTime,v1,v2);
  }
}
val

 This worked flawlessly to help us use a dropdown menu to govern certain shape changes, and animate them according to a duration I specified.

Now I need to do something slightly different. In the original comp, all the shape dynamics were stored on individual layers in the same comp as the dropdown menu. Now, I have need of non-animated versions of a number of shots, and to do that I need to move the layers with the positions and sizes into a master comp (some later steps will depend on this; the idea is to move the calculations into a single place where all comps can call upon them).

The problem is, no matter how I try to tweak this, it gives me errors. Basically I need this expression to do the exact same thing we set it up to do, but instead of looking in thisComp for a layer name matching the value of the dropdown, I need it to look in comp("_Master Layouts").

I've been trying to fix this for almost two hours and it's still having issues. Either it can't find a layer matching the value from the dropdown, or it can't find the dropdown itself, and I can't figure out what isn't working.

I've uploaded the comp in its original configuration and an alternate version with the setup I'm trying to get to. Can you help?

This topic has been closed for replies.
Correct answer Dan Ebberts

What happens when you replace

thisComp.layer(L1name)

with

comp("_Master Layouts").layer(L1name)

and

thisComp.layer(L2name)

with

comp("_Master Layouts").layer(L2name)

?

1 reply

Dan Ebberts
Community Expert
Dan EbbertsCommunity ExpertCorrect answer
Community Expert
April 24, 2023

What happens when you replace

thisComp.layer(L1name)

with

comp("_Master Layouts").layer(L1name)

and

thisComp.layer(L2name)

with

comp("_Master Layouts").layer(L2name)

?

brandonb96942845
Inspiring
April 24, 2023

It says it can't find the dropdown menu:

 

brandonb96942845
Inspiring
April 24, 2023

Alright, I've figured it out...we set up the dropdown source text like this:

 

 

var x = effect("Dropdown Menu Control")("Menu").value,
temp1 = 14;
titles = [thisComp.layer(index+temp1).name,
  thisComp.layer(index+temp1+1).name,
  thisComp.layer(index+temp1+2).name,
  thisComp.layer(index+temp1+3).name,
  thisComp.layer(index+temp1+4).name,
  thisComp.layer(index+temp1+5).name,
  thisComp.layer(index+temp1+6).name,
  thisComp.layer(index+temp1+7).name,
  thisComp.layer(index+temp1+8).name,
  thisComp.layer(index+temp1+9).name,
  thisComp.layer(index+temp1+10).name,
  thisComp.layer(index+temp1+11).name,
  thisComp.layer(index+temp1+12).name,
  thisComp.layer(index+temp1+13).name,
  thisComp.layer(index+temp1+14).name,
  thisComp.layer(index+temp1+15).name,
  thisComp.layer(index+temp1+16).name,
  thisComp.layer(index+temp1+17).name,
  thisComp.layer(index+temp1+18).name,
  thisComp.layer(index+temp1+19).name,
  thisComp.layer(index+temp1+20).name,
  thisComp.layer(index+temp1+21).name,
  thisComp.layer(index+temp1+22).name,
  thisComp.layer(index+temp1+23).name,
  thisComp.layer(index+temp1+24).name,
  thisComp.layer(index+temp1+25).name,
  thisComp.layer(index+temp1+26).name,
  thisComp.layer(index+temp1+27).name,
  thisComp.layer(index+temp1+28).name,
  thisComp.layer(index+temp1+29).name,
  thisComp.layer(index+temp1+30).name,
  thisComp.layer(index+temp1+31).name,
  thisComp.layer(index+temp1+32).name,
  thisComp.layer(index+temp1+33).name,
  thisComp.layer(index+temp1+34).name,
  thisComp.layer(index+temp1+35).name,
  thisComp.layer(index+temp1+36).name,
  thisComp.layer(index+temp1+37).name,
  thisComp.layer(index+temp1+38).name,
  thisComp.layer(index+temp1+39).name,
  thisComp.layer(index+temp1+40).name,
  thisComp.layer(index+temp1+41).name,
  thisComp.layer(index+temp1+42).name,
  thisComp.layer(index+temp1+43).name,
  thisComp.layer(index+temp1+44).name,
  thisComp.layer(index+temp1+45).name,
  thisComp.layer(index+temp1+46).name,
  thisComp.layer(index+temp1+47).name,
  thisComp.layer(index+temp1+48).name,
  thisComp.layer(index+temp1+49).name,
  thisComp.layer(index+temp1+50).name,
  thisComp.layer(index+temp1+51).name,
  thisComp.layer(index+temp1+52).name,
  thisComp.layer(index+temp1+53).name,
  thisComp.layer(index+temp1+54).name,
  thisComp.layer(index+temp1+55).name,
  thisComp.layer(index+temp1+56).name,
  thisComp.layer(index+temp1+57).name,
  thisComp.layer(index+temp1+58).name,
  thisComp.layer(index+temp1+59).name,
  thisComp.layer(index+temp1+60).name,
  thisComp.layer(index+temp1+61).name,
  thisComp.layer(index+temp1+62).name,
  thisComp.layer(index+temp1+63).name,
  thisComp.layer(index+temp1+64).name,
  thisComp.layer(index+temp1+65).name,
  thisComp.layer(index+temp1+66).name,
  thisComp.layer(index+temp1+67).name,
  thisComp.layer(index+temp1+68).name,
  thisComp.layer(index+temp1+69).name,
  thisComp.layer(index+temp1+70).name,
  thisComp.layer(index+temp1+71).name,
  thisComp.layer(index+temp1+72).name,
  thisComp.layer(index+temp1+73).name,
  thisComp.layer(index+temp1+74).name,
  thisComp.layer(index+temp1+75).name,
  thisComp.layer(index+temp1+76).name,
  thisComp.layer(index+temp1+77).name,
  thisComp.layer(index+temp1+78).name,
  thisComp.layer(index+temp1+79).name,
  thisComp.layer(index+temp1+80).name,
  thisComp.layer(index+temp1+81).name,
  thisComp.layer(index+temp1+82).name,
  thisComp.layer(index+temp1+83).name,
  thisComp.layer(index+temp1+84).name,
  thisComp.layer(index+temp1+85).name];
titles[x-1]

 

But now with all those layers gone, the dropdown doesn't have anything to pull from (or rather, it doesn't have the right layers, or enough of them, to pull from, hence the error). I'm going to try changing the relative references to the Master Layouts comp and see if that fixes the issue.