Creative Communities of the World Forums

The peer to peer support community for media production professionals.

Activity Forums Adobe After Effects What statement to check character in word ?

  • What statement to check character in word ?

    Posted by Supak Suksawat on August 23, 2021 at 3:51 am

    I want create the statement to check character in word ,by that character is the some of word not all word. now I get this statement

    ———————————————–

    if (child.indexOf(checkHEAD) !== -1){

    paH = layersList[i];

    alert(paH.name);

    }

    ———————————————

    the word is ….. – head

    I want check word that have “head ” in word but now it check “h”,”e”,”a”,”d”

    Walter Soyka replied 4 years, 8 months ago 3 Members · 8 Replies
  • 8 Replies
  • Graham Quince

    August 23, 2021 at 2:20 pm

    You’ll need ORs in there:

    if (child.indexOf('h') > -1 || child.indexOf('e') > -1 || etc... ){

    paH = layersList[i];

    alert(paH.name);

    }

  • Supak Suksawat

    August 23, 2021 at 3:10 pm

    I have a little bit problem about loop

    ——————

    for (i=0;i<layersList.length;i++){

    …..

    else if (child.indexOf(checkHEAD) >-1){

    paH=layersList[i];

    }

    else if (child.indexOf(checkHAIR) >-1){

    paF[i] = layersList[i];

    //alert(paF[i].name);

    }

    }

    if(paH==0){

    }

    else if(paH!=0){

    for (i=0;i<layersList.length;i++){

    alert(paF[i].name);

    }

    }

    I select layer and when it see layer checkHEAD it jump out loop don’t alert layer behind layer checkHEAD but it have layer that should alert behind layer checkHEAD.

    It tell

    alert(paF[i].name);

    this line is undefined is not an object when it check to layer checkHEAD

  • Walter Soyka

    August 23, 2021 at 5:46 pm

    It’s going to be very difficult for us to help debug logic errors in this code without being able to see more of it.

  • Walter Soyka

    August 23, 2021 at 5:46 pm

    … and the comp it’s supposed to be working on.

  • Supak Suksawat

    August 24, 2021 at 2:05 am

    ——————————————

    var layersList = app.project.activeItem.selectedLayers;

    var checkHAT =”HAT”;

    var checkGAP =”GAP”;

    var checkHAIR =”HAIR”;

    var checkEAR =”EAR”;

    var checkNOSE = “NOSE”;

    var checkMOUTH = “MOUTH”;

    var checkEYE = “EYE”;

    var checkCHEEK=”CHEEK”;

    var checkHEAD = “HEAD”;

    var paH =0 ;

    var paF =[layersList] ;

    for (i=0;i<layersList.length;i++){

    var child= layersList[i].name;

    /* check HEAD */

    if (child.indexOf(checkHEAD) >-1){

    paH=layersList[i];

    }

    /* check FACE*/

    else if (child.indexOf(checkHAIR) >-1){

    paF[i] = layersList[i];

    //alert(paF[i].name);

    }

    else if (child.indexOf(checkEAR) >-1){

    paF[i] = layersList[i];

    //alert(paF[i].name);

    }

    else if (child.indexOf(checkNOSE) >-1){

    paF[i] = layersList[i];

    //alert(paF[i].name);

    }

    else if (child.indexOf(checkMOUTH) >-1){

    paF[i] = layersList[i];

    //alert(paF[i].name);

    }

    else if (child.indexOf(checkEYE) > -1){

    paF[i] = layersList[i];

    //alert(paF[i].name);

    }

    else if (child.indexOf(checkCHEEK) > -1){

    paF[i] = layersList[i];

    //alert(paF[i].name);

    }

    else if (child.indexOf(checkGAP) > -1){

    paF[i] = layersList[i];

    //alert(paF[i].name);

    }

    else if (child.indexOf(checkHAT) > -1){

    paF[i] = layersList[i];

    //alert(paF[i].name);

    }

    }//loop out

    if(paNe==0){

    alert(“No “+checkNECK);

    }

    else if(paNe!=0){

    alert(paH.name);

    }

    if(paH==0){

    alert(“No “+checkHEAD);

    }

    else if(paH!=0){

    for(i=0;i<layersList.length;i++){

    alert(paF[i].name);

    }

    }

    ————————————–

    you will see in picture when run head it not run more and error ,but if I move layer hair 04 and hat 02 at top layer head it run

  • Supak Suksawat

    August 24, 2021 at 3:03 am

    I check value in array I found it get value 0-12 and skip to 15 16 that mean the loop that I use to alert it can’t run when it come to layer head because it don’t have value 13-14 in array that make it error right ? and how to solved it ?

  • Supak Suksawat

    August 24, 2021 at 4:40 am

    what script to reset value in array and run script again ?

    I mean when I put my script in button.onclick it get leyer value that I check before not layer value that I want to check now, It can just 1 time and reset script but I want it reset value when check done for I can check any time that I want, don’t run script again.

  • Walter Soyka

    August 24, 2021 at 5:14 pm

    I’m assuming that you want paF to be an array of face-related layers?

    This code loops through all selected layers.

    If it finds a HEAD layer, it sets paH to that layer. (Note that if you have multiple HEAD layers, no error will be thrown and the script will just use the last HEAD layer in the selection.)

    If it finds a FACE layer, it pushes that layer onto the paF array. paF begins as a null layer, and then each detected FACE layers is added to the array. Note that this array has its own indexing, not necessarily related to the comp’s index — though, of course, you can always look at paF[i].index to get that info.

    var layersList = app.project.activeItem.selectedLayers;

    var checkHAT = "HAT";

    var checkGAP = "GAP";

    var checkHAIR = "HAIR";

    var checkEAR = "EAR";

    var checkNOSE = "NOSE";

    var checkMOUTH = "MOUTH";

    var checkEYE = "EYE";

    var checkCHEEK = "CHEEK";

    var checkHEAD = "HEAD";

    var paH = 0;

    var paF = [];

    // iterate through all selected layers. Find the HEAD layer, and build an array of FACE-related layers.

    for (i = 0; i < layersList.length; i++) {

    var child = layersList[i].name;

    /* check HEAD */

    if (child.indexOf(checkHEAD) > -1) {

    paH = layersList[i];

    }

    /* check FACE*/

    else if ((child.indexOf(checkHAIR) > -1) ||

    (child.indexOf(checkEAR) > -1) ||

    (child.indexOf(checkMOUTH) > -1) ||

    (child.indexOf(checkEYE) > -1) ||

    (child.indexOf(checkCHEEK) > -1) ||

    (child.indexOf(checkGAP) > -1) ||

    (child.indexOf(checkHAT) > -1)) {

    paF.push(layersList[i]);

    }

    } //loop out

    if (paH == 0) {

    alert("No " + checkHEAD);

    } else if (paH != 0) {

    var t = "Head layer:\n" + paH.name + "\n\nList of face layers (paF):\n";

    for (i = 0; i < paF.length; i++) {

    t += paF[i].name + "\n";

    }

    alert(t);

    }

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