Changing Status of the Next/Previous Buttons

May 31, 2012

How do I enable/disable the Next previous button based on a variable?

I have 6 buttons that reveal content on layers.  I want the next button hidden/disabled until all 6 of the buttons have been clicked.   I have already set up the variables and they work.  I have a layer appear after the 6th click that says they have completed the slide and can click the next button.  Problem is they could click the next button earlier if they want.

Has to be a way to hide/show, enable/disable the next and previous buttons based on a variable right????

Thanks in advance?

19 Replies
Phil Mayor

Hi Marc, you cannot hide or disable the next button.  You can add conditions to the next button triggers (and show a layer if they have not me the criteria so they know why the button does not work) the conditions will stop it working until your criteria are passsed.  You cannot add any triggers to the previous button so cannot stop them being pressed.

The other way of doing this is to remove the next/prev button from the player and build your own on the slide, this way you can hide and disable them.  If you put them on a slide master you  would only need to build them once

Chantelle N

Hi all,

Would someone be able to walk me through the variables/triggers I would need to set in a situation like this? I am adding custom navigation buttons to the master slide as Phil suggested, but I'm not quite clear on how I make the next button show after all criteria is met for each individual slide.

My main criteria is that the users have either hovered over all markers, or have clicked on all hotspots (depending on the slide). I have started the process of adding a variable named "Markers" where the initial state is False for the next button. However, when I went to an individual slide to start the process of adding a trigger, I get through the Action, Variable, Operator, and Value options only to get confused on When, because I don't have an option there specify "all hotspots clicked" or "all markers hovered".

I'm thinking I need to add another variable that describes whether or not the markers/hotspots have been visited, and then select Variable Changes under the When option (specifying the variable about the markers or hotspots)? If that is the answer, what would be the correct way to program a variable (or variables) for making sure all hotspots or markers are visited before the next button appears?



Chantelle N

Ok, so now that I've gotten this feature to work, I need yet another feature

Is it possible that I can create a variable so that when a user hits the last slide of the project, the arrows will then all appear for all the slides (that before required visited states) so that a user can navigate freely to review after they complete it once all the way through? I'm not sure if it's possible to create a variable that would override all previous triggers for those arrows.

So far I have tried adding a new layer to the master slide with a permanent arrow (no triggers needed) and added a variable to the last page of the project that triggers that layer to show when the user visits that last page, thinking this would then make it appear for all slides in the project. However, it only works for that one page - when I go back to review the previous slides everything is reset.

Any ideas, or am I out of luck on this one?



Steve Flowers

Hi, Chantelle - 

Definitely can do this. I've got some frameworks in Storyline that deactivate the next button until a page has been completed (either through activity completion or end of the timeline) and on subsequent visit unlocks the navigation. You could deal with this in a couple of ways. I'll throw together a quick demo this week. 

Steve Flowers

There is a little bit of work involved to set this up but there's also quite a bit of functional enhancement afforded by the additions (page x of x tracking, page visit history that affects visibility of navigation elements, toggled navigation availability, navigation that floats above other layers, centralized navigation elements). 

When adding layers to this setup, make sure you uncheck "hide other layers" or it'll hide the navigation.



All of the navigation and common display elements are on the master slide. This works through variables to "broadcast signals" to listeners. That's how I'm able to communicate between the Master and Base slides.

Steve Flowers

Forgive the interface ugliness. It's not up to my standards -- it was late.

By the way, I'm kind of hoping this will drive some functionality into the tool core. Would be super-lovely-fantastic if I didn't have to bend these features in Some of the workarounds illustrate some bugs in the master slide layer functionality (maybe features, dunno:P). Pretty happy with the way it works considering.

Chantelle N

OK so upon first pass I have just a few questions before I start trying it:

1) In my project I have two different slide master styles. Can I simply repeat the structure shown on your .story file for both layers or will they need to be different somehow?

2) I'm assuming in my actual project I would hide the text box that shows the variables as true or false?

Chantelle N

Alright - I have hit a snag.

I have many slides that have triggers so that when a marker is hovered over, it shows a new layer (and returns to original state when hovered off). For example, one marker says "When enter is pressed"...and at that same time a red box appears over the Enter button so users can see where it is.

With the new navigation features added, everything works as long as I do not hover over any of the icons and make the other layers appear. When I do, my arrows totally disappear. I'm assuming this has to be because other layers on the screen are not programmed with the same parameters and the ones on the base layer/master are not overriding.

So, how would I fix this? Do I duplicate the triggers on the base layer on each layer on the slide? I'm assuming something would need to be tweaked but at this point I'm not sure what that would be.

Steve Flowers

Yep. That's a limitation of this setup but is easy to work around. One way to do this is by unchecking hide other layers. The other is by issuing a trigger to toggle the variable ShowNavOverlay using a trigger to modify the variable with the NOT assignment. That'll wake up the navigation. For times when you want to utilize the hide other layers feature to automate hide / show, this works. Just call this trigger after you load the layer.

Chantelle N

Forgive me Steve, but I am having trouble making the navigation work when I have other layers involved where I cannot uncheck hide other layers due to the way they would overlap each other. I have successfully added the "NOT" assignment trigger so that the navigation buttons show up, but of course the next button is not active.

So, I tried adding triggers in every combination to each of the 3 layers so that the next button becomes active at some point for each layer, which works in some cases for the first layer I click - meaning whichever of the 3 I click first, it doesn't matter -  but then disappears for any layer I click after that. And, going back to whichever one I clicked first does not revive the next button - navigation is just permanently dead after that.

Is there a way to do this or should I resort to simply creating a separate master slide for this particular slide where the navigation is not restricted?

Chantelle N

Hi all,

Going back to my very first post in this thread, I am trying to add additional criteria that takes into account whether or not the audio has completed for the slide.

So, I want the user to both have visited all markers AND have listened to the entire slide. If they visit the markers but the slide audio hasn't completed, I don't want the next button to show, and vice versa.

I thought I could easily accomplish this by tweaking the following triggers that were in the sample Steve gave. I have added both to my slides. However, it only listens to the one regarding the markers. Do they somehow cancel each other out and is there a way to do this successfully?

Set activateNext equal to TRUE

When the timeline ends

If Marker XYZ's state is EQUAL TO VISITED

Set activateNext equal to TRUE

When the state of Marker XYZ is VISITED

If TimelineEnds is EQUAL TO TRUE

This discussion is closed. You can start a new discussion or contact Articulate Support.