Creative Communities of the World Forums

The peer to peer support community for media production professionals.

Activity Forums Adobe After Effects Opacity triggered by layer’s name

  • Opacity triggered by layer’s name

    Posted by Jean Livenais on March 9, 2024 at 1:10 pm

    Hello!

    Id’like to show a particular element in a composition when one of the layer’s name contains a specific name.

    The following code is doing the job, but can you show me a way to shorten and simplify it please?

    In the composition when the number of existing layers is lower than the number of “CnameX” defined in the code, it shows this error: “Error: Layer 30 index out of range”.

    Id’like to reuse this expression for various compositions.

    I guess the code would include “thisComp.numLayers”.

    Thank you for your help

    in opacity expression:

    a=0;

    b=3;

    nam = “3 4”

    Cname1 = thisComp.layer(1).name.substr(a,b)

    Cname2 = thisComp.layer(2).name.substr(a,b)

    Cname3 = thisComp.layer(3).name.substr(a,b)

    Cname4 = thisComp.layer(4).name.substr(a,b)

    Cname5 = thisComp.layer(5).name.substr(a,b)

    Cname6 = thisComp.layer(6).name.substr(a,b)

    Cname7 = thisComp.layer(7).name.substr(a,b)

    Cname8 = thisComp.layer(8).name.substr(a,b)

    Cname9 = thisComp.layer(9).name.substr(a,b)

    Cname10 = thisComp.layer(10).name.substr(a,b)

    Cname11 = thisComp.layer(11).name.substr(a,b)

    Cname12 = thisComp.layer(12).name.substr(a,b)

    Cname13 = thisComp.layer(13).name.substr(a,b)

    Cname14 = thisComp.layer(14).name.substr(a,b)

    Cname15 = thisComp.layer(15).name.substr(a,b)

    Cname16 = thisComp.layer(16).name.substr(a,b)

    Cname17 = thisComp.layer(17).name.substr(a,b)

    Cname18 = thisComp.layer(18).name.substr(a,b)

    Cname19 = thisComp.layer(19).name.substr(a,b)

    Cname20 = thisComp.layer(20).name.substr(a,b)

    Cname21 = thisComp.layer(21).name.substr(a,b)

    Cname22 = thisComp.layer(22).name.substr(a,b)

    Cname23 = thisComp.layer(23).name.substr(a,b)

    Cname24 = thisComp.layer(24).name.substr(a,b)

    Cname25 = thisComp.layer(25).name.substr(a,b)

    Cname26 = thisComp.layer(26).name.substr(a,b)

    Cname27 = thisComp.layer(27).name.substr(a,b)

    Cname28 = thisComp.layer(28).name.substr(a,b)

    Cname29 = thisComp.layer(29).name.substr(a,b)

    Cname30 = thisComp.layer(30).name.substr(a,b)

    Cname31 = thisComp.layer(31).name.substr(a,b)

    if (Cname1 == nam) {100}

    else if (Cname2 == nam) {100}

    else if (Cname3 == nam) {100}

    else if (Cname4 == nam) {100}

    else if (Cname5 == nam) {100}

    else if (Cname6 == nam) {100}

    else if (Cname7 == nam) {100}

    else if (Cname8 == nam) {100}

    else if (Cname9 == nam) {100}

    else if (Cname10 == nam) {100}

    else if (Cname11 == nam) {100}

    else if (Cname12 == nam) {100}

    else if (Cname13 == nam) {100}

    else if (Cname14 == nam) {100}

    else if (Cname15 == nam) {100}

    else if (Cname16 == nam) {100}

    else if (Cname17 == nam) {100}

    else if (Cname18 == nam) {100}

    else if (Cname19 == nam) {100}

    else if (Cname20 == nam) {100}

    else if (Cname21 == nam) {100}

    else if (Cname22 == nam) {100}

    else if (Cname23 == nam) {100}

    else if (Cname24 == nam) {100}

    else if (Cname25 == nam) {100}

    else if (Cname26 == nam) {100}

    else if (Cname27 == nam) {100}

    else if (Cname28 == nam) {100}

    else if (Cname29 == nam) {100}

    else if (Cname30 == nam) {100}

    else if (Cname31 == nam) {100}

    else {0}

    Brie Clayton replied 2 years, 4 months ago 4 Members · 5 Replies
  • 5 Replies
  • Graham Quince

    March 9, 2024 at 4:24 pm

    Hard to confirm without seeing your full project, but I think this does what you’re after:

    a=0;

    b=3;

    nam = "3 4";

    var CnameArray = [];

    var opac = 0;

    for (var i = 0, i < 31, i++) {

    CnameArray[i] = thisComp.layer(i).name.substr(a,b);

    if (CnameArray[i] == nam) {

    opac = 100;

    }

    }

  • Dan Ebberts

    March 9, 2024 at 6:51 pm

    I think I’d set it up like this:

    a = 0;
    b = 3;
    n = "3 4";
    val = 0;
    for (i = 1; i <= thisComp.numLayers; i++){
    if (thisComp.layer(i).name.substr(a,b) == n){
    val = 100;
    break;
    }
    }
    val
  • Jean Livenais

    March 9, 2024 at 7:00 pm

    Thank you for your quick response Graham,

    It shows an error: Syntax error: Unexpected token ‘<‘

  • Jean Livenais

    March 9, 2024 at 7:00 pm

    Thank you Dan it works!

  • Brie Clayton

    March 10, 2024 at 1:25 am

    Thank you for solving this, Dan!

We use anonymous cookies to give you the best experience we can.
Our Privacy policy | GDPR Policy