Show Layer After Variables Met

I would like Layer 9 to only Show only after the learner has visited the other 8 layers. I've used True/False Variables for when a layer is visited but i just can't seem to get it to work correctly.

I searched the discussions and tried a few different methods but I'm missing something really simple. It appears that if you set it to when the timeline ends or starts, the variables need to be set to True at the exact moment in time (like a snapshot) and that doesn't work.


17 Replies
Tom Kuhlmann

You only need to use the timeline starts if you leave and revisit the page. If you remain on the slide then you can use a "when variable changes" trigger.

Can't look at you file right now, but one way to do this is use a T/F to track a layer visited. Then create a T/F variable to unlock layer 9. And that one would be set to true on the condition that all of the other 8 are also True.

Hope that makes sense.

Tracy Buthe

Hi Michael,

I got the slide to work. Basically you had two variables doing the same thing. One on the base layer and one on each layer. I removed the one from the layer. I think the problem you were running into is how to trigger layer 9 to show. You needed to tell SL what action to trigger layer 9 on so I reworked the variables and I have it working in the attached example. If you have any more questions about what I did, feel free to ask.

Mike DiFonzo


Thanks for getting it to work. Looks like the Trigger to change the variable TimeOutComplete has to be set for every object though.

I was trying to be more efficient and use one trigger to change the TimeOutComplete variable to True but looks like there isn't a way to do that. In coding you can use one IF statement to change the variable to True if all of the other variables are also True. 



Mike DiFonzo

I just noticed an issue. The final layer  clicked (Item 08) doesn't display because TimeOutComplete = True making Layer 9 appear. Layer 9 over-rides the previous.

How can I put some sort of pause so that Layer 08 displays and then Layer 9 does. It's supposed to be automatic but enough time for the learner to read. I suppose I could get rid of the layer and make it an object on the base layer with a delayed timeline display.  

Mike DiFonzo


Originally, I started trying to use the visited states but there wasn't such a state since it was grouped. Thanks for the tip on typing directly in the oval. This was a template from Content Library and wish they didn't use groups.

I believe I still have an issue with your method though. Item 08 has a text banner on the bottom. When all ovals are visited Layer 9 displays another text banner on top of Item 08 so that 08 never displays (in my uploaded file I had the cartoon displaying in upper-corner as an example).

How do I get Layer 08 and 9 to be viewable using your method? Move layer 9 to the base layer and delay the time?



Tom Kuhlmann

They use groups so it's easier for the less experienced to see how things are set up.

  1. You could lock them and force them to go through the ovals in order, and when they get to 8, have a button or something they need to do to activate layer 9/
  2. All of the layers have text and they could have the same issue. You could add a button that's hidden on each layer. The button only becomes visible when the state conditions are met. That button would link to layer nine. 
Mike DiFonzo

I have spent way too much time on this but here's what I've found:

  • Couldn't use the Visited States options in the end. When you click on the last choice, it's actually in the Selected state (and not Visited) so  variable TimeOutComplete = True wouldn't occur (when State All of: Oval 1-8 is Visited). So, Layer 9 wouldn't trigger to display.
  • I went back to using variables = True for each time a specific oval was clicked.  TimeOutComplete = True was triggered to display the final layer.
  • All looked good BUT I wanted a final summary text banner to display on the base layer. It wouldn't display if I had the textbox displaying over the Layer 9 textbox. It only worked if I placed the textbox in a different spot.
  • I paused the base timeline at Timeline Start.  Each Layer also is triggered to Pause timeline (if I don't pause, the final layer textbox will stop displaying too soon). The layer Timeline will resume when TimeOutComplete = True (all ovals clicked)
  • Each slide layer property is set to Hide slide layer when timeline finishes (this will hide the final layer's textbox so that the summary textbox on the base can display over the top of it)
  •    The base layer is triggered to Resume timeline when TimeOutComplete = True  (all ovals visited).

Everything looks good EXCEPT the base layer pauses and doesn't resume to display the final summary textbox. I know I can just display the summary in another area but I'd like to know how to get this to work for the next time.

Leslie McKerchie

You'd need a way to close the layer in order to display the base layer again. The base layer is resuming. I checked by moving this text box:

I'm not getting the full picture of your file as I do not see a Layer 9 in your LayeredVariablePaused.story shared above, but hopefully that information shared will help you out.

Mike DiFonzo

Finally had time to focus on this and was able to solve.

I used the variable TimeOut01 = True on base layer whenever an oval was clicked (going to another slide layer).  TimeOutComplete = True when the user clicks on an oval with the Condition If all of the other variables also = True.

I paused the timeline on base layer when timeline starts. This was so that the summary textbox wouldn't appear until all layers had been visited and would appear over the top of the last textbox. 

I resumed the timeline when TimeOutComplete = True (when all layers had been visited). I had the summary textbox appear 4 seconds later on the timeline. This gave time for the last layer to display it's text and then the summary could display on top of it.

Thanks for the assist in getting me there.