Intro
This question appears often: how can I force the user to view the slide completely before the Next button appears; but when revisiting the slide the Next button should appear immediately. From a pedagogical point of view, I don't think this will improve the efficiency of the learning, but that is off topic.
Watch this movie: forcing view is used on the slide with the animated dices. The workflows for the audio slides will be explained in a future blog post.
I will explain my analysis and how to create the needed variables and advanced action.
Analysis
Look at the timeline of the animated dices slide from the movie.
This particular slide is just an example. You see that the Next button (a shape button) appears after the last animation has finished, the learner is forced to watch everything that happens on this slide before the Next button becomes available and learner can proceed. We don't want to put him/her throught the same ordeal when revisiting the slide. Here are three possible workflows:
- Create two Next buttons: the one at the end (visible at first visit) and another hidden button, with a timeline that starts from the start of the slide. That second button has to be made visible on second and later visits, whereas the first button will be hidden. Advantage: learner can watch the animations if he wants to, but also skip them by clicking the Next button.
Problem: this will not be possible in responsive projects with Fluid boxes if you want the two buttons in exactly the same location. Even though they are not timed to appear at the same time, a normal fluid box doesn't allow this.
- One Next button, timed from the start of the slide, to be shown/hidden. Use the On Enter event to check tf it is a first visit. If that is the case, hide the Next button, use the command 'Delay Next Actions by....' and enter the time that you want to keep the Next button invisible, then Show the Next button. This looks a good workflow but you have to avoid to offer the possibility to the learner to pause the slide. The Delay command takes not into account any pausing. If you cannot figure out how to script this solution, send me a note.
- Use what you learned about Micro-navigation: except for the first slide visit, jump directly to the start frame of the Next button's timeline. That means that everything will be in place, animations are finished in this case. Check to have all objects timed for the rest of the slide (CTRL-E). Since there is no stacking in this workflow, this workflow is also functional for responsive projects developed with Fluid Boxes. Focus of this article is on this last workflow. Check the Timeline screenshot: the jump should be equivalent with 10secs , start of the Next Button timeline.
All workflows need to track if the learner visits the slide for the first time or not. That can be done by a user variable. We could use a Boolean, or a variable that is incremented with each visit. It is the increment approach that will be used here.
Advanced Action + Variables
The variable that will track the visits got the name v_visit, and a default value of 0. It will be incremented by 1 on each visit. Eventually you can show the number of visits by inserting that variable in a text container:
We have to jump 10secs ahead, which has to be converted to frames.You can use the system variable cpInfoFPS. We'll use another variable v_skip to store the number of frames (that variable could be reused on several slides):
The advanced action will have two decisions, as you can see in this Preview:v_skip = cpInfoFPS * 10
In the first decision 'Always' which is not conditional, the number of frames is calculated and the tracking variable v_visit is incremented. The second decision 'JumpFrames' is conditional: if it is not the first visit, the playhead will jump as many frames ahead as calculated in v_skip. Since this action is triggered On Enter of the slide, the system variable cpInfoCurrentFrame corresponds with the first frame of the slide.
Afterthoughts
How will you manage if you have a lot of slides that need to get this 'Forced view' action? What can be reused? Will you duplicate and edit the actions? What has to be edited? Try to find an answer to those questions. Look out for my reflections in two future posts: next one will show that a similar advanced action can be used for another use case, and in a third post I'll explain why this perfect to be converted to a Shared action, how to convert the present advanced to a Shared action to make it as flexible as possible.