Skip to main content
Participating Frequently
Sep 10, 2020 1:05 PM UTC
Answered

Show a button based on which layers are visible (javascript)

So I've got a "Game" I've made in Acrobat where the user clicks on certain buttons and a layer appears. I wanted to do a final "congratulations" thing at the end when they click on the finish button.

 

Basically If "Layer 20" and "Layer 11" (and some others that I haven't done yet) are visible and the rest are not then I want the button "Complete" to appear.

 

Otherwise I'd like it to reset the visibility of the layers to the default state.

 

This is as far as I've got:

function FindOCG(cName) { 
    var aOCGs = this.getOCGs(); 
    for(var i=0; aOCGs && i<aOCGs.length;i++) { 
        if(aOCGs[i].name == cName) return aOCGs[i]; 
    } 
    return null; 
}
if(FindOCG("Layer 20"&&"Layer 11").state=true) 
{
this.getField("Complete").display=display.visible;
}
Else
{
this.getField("Complete").display=display.hidden;
}

If 20 and 11 are visible it appears okay, but if they're not visible and I click the Finish button then those layers appear and so does the finish button.

 

Please can anyone help, I'm so stuck now.

This topic is closed to new replies. Start a new post to keep the conversation going.
try67
try67Correct answer
Community Expert
Sep 10, 2020 3:07 PM UTC

In addition to Bernd's correct comment, the comparison opeator in JS is either "==" or "===". So change this line:

if (FindOCG("Layer 20"&&"Layer 11").state=true)

to:

if (FindOCG("Layer 20").state==true && FindOCG("Layer 11").state==true)

6 replies

Participating Frequently
Sep 10, 2020 3:24 PM UTC

Thank you SO much! That work's perfectly!

Translate
try67
Community Expert
try67Community ExpertCorrect answer
Community Expert
Sep 10, 2020 3:07 PM UTC

In addition to Bernd's correct comment, the comparison opeator in JS is either "==" or "===". So change this line:

if (FindOCG("Layer 20"&&"Layer 11").state=true)

to:

if (FindOCG("Layer 20").state==true && FindOCG("Layer 11").state==true)

Translate
Bernd Alheit
Community Expert
Community Expert
Sep 10, 2020 3:19 PM UTC

Is "==true" necessary?

Translate
try67
Community Expert
Community Expert
Sep 10, 2020 3:24 PM UTC

No, it's not. I just left it because it was in the original code.

Translate
Bernd Alheit
Community Expert
Community Expert
Sep 10, 2020 2:08 PM UTC

Following is not possible:

FindOCG("Layer 20"&&"Layer 11")

 FindOCG accepts only one name.

Translate
Participating Frequently
Sep 10, 2020 3:23 PM UTC

Thank you, that is very good to know!

Translate