State will not change back to normal from visited per variable

I seem to have a problem using variables to change the state of menu items. I have a menu at the start of my course with a button for each of five scenes. I an using states to with each menu button to change to visited when it has been visited. However, if the learner starts a scene but doesn't finish it, I want the menu button for that scene to change back to normal instead of showing it has been visited.

I set up a variable corrosponding to each menu item and set the initial value for false. The varible is triggered to change to true when the timeline starts on the very last slide of its corrosponding scene.  I am using the variables also to show a layer with a change in a caption on the menu slide depending on if its the first time viewed (base layer) at least one scene has been viewed (return layer) or when all scenes have been played (finished layer) and that is working, so I know the variable is changing on the last slide to true. There are triggers on the menu slide to change the state of the menu buttons back to normal if the corresponding values are equal to false (the initial, unchanged value) But its not working that way  - the state of the menu item is not changing back to normal if the learner navigates away from a scene before reaching the final slide which changes the variable to true. I have tried setting the triggers on the menu object or as slide triger. Neither way makes a difference. The state will not change to normal based on the variable. 

Can you tell by the screen shots of my setting what might be wrong? Is there an alternate way to make the state change back?

4 Replies
Jamie Morgan

From what I can see, the problem isn't with your triggers - it is with the "visited" state and the "automatically decide" resume state that is set on the slide properties. If interaction is present on a slide, the automatically decide resume will resume the slide from where the user left off. In this case, it is resuming with the visited state of the button as they had visited that button the last time they were on the slide.

My recommendation is to duplicate the visited state and name it something like "completed" or anything that's not a default name. Then delete the visited state from your buttons. Now, the button will not change when the user clicks it since there is no visited state. Instead, have your triggers on this slide to change it to the "completed" (or whatever name you use) state when your tracking variable is equal to "true". It's the reverse of how you have it now. By doing this, the button will stay normal until the user reaches the point where your tracking variable changes to "true". From that point on, your menu will now show the button in the completed state.

Hope that makes sense.

Marilyn Bender

That makes perfect sense - and it worked. Thank you so much! I never would have figured that one out. 

I have layers which change the title caption based on the same variables.  For some reason, I can't get my "finished" layer to show once all the variables have been changed to true. My "return" layer does show as set after at least one of the variables has changed to true. Does it matter what order the triggers are in? I tried them in different orders - no luck there. Since the trigger was placed on the base layer and didn't work, I tried putting the trigger on the return layer, since that's what would be showing -- that didn't work either.  Here is what my triggers look like. Any suggestions?

Jamie Morgan

The order of the triggers does matter as they are performed from top to bottom. The problem you have is that all 3 of the bottom triggers are firing as the conditions for each would be true. For the show "finished layer" trigger, your 3 variables would be equal to true if they've visited all of them so that layer will show. The next trigger to hide the "return layer" would also fire as the 3 variables would all be true. However, the last trigger to show the "return layer" would also fire as all 3 variables are true so the conditions are satisfied for that. In essence, the finished layer is being shown, the return layer is being hidden, and the return layer is being shown all at the same time. By default, the last trigger (show return layer) fires last so the return layer will always be showing if one of the 3 variables is true.

You need to change the logic on your return layer showing so that it fires on the condition that any of the 3 variables is false. By doing this, it would not fire in the instance that all 3 variables are true (all sections are visited), thus under the show finish layer would fire in that instance.

Hope that helps!