

I have several objects on a slide the learner must click and read associated information. How do I make sure they click every object before advancing the slide?
I have several objects on a slide the learner must click and read associated information. How do I make sure they click every object before advancing the slide?
You must be logged in to post a comment.

- Most Recent
- Most Relevant
There are several solutions possible to realize a Forced view, which is not very pedagogical when developing learning for adults. However, you also need to preview the situation where the learner revisits a slide. Do you really want to force him to do the same compulsory clicking?
I would use a shared action and have one ready to be used in any situation and all projects. It can also be used for a situation where you want an audio clip to play only the first time, and not force to listen again on revisiting.
http://blog.lilybiri.com/force-first-slide-view-micro-navigation
That first blog explains the workflow and this one the conversion to shared action:
http://blog.lilybiri.com/advanced-to-shared-action-step-by-step-micro-navigation-showcase
Here’s a working example of what I described. This is the bare bones. You can easily add features like a popup close button, unlock on second visit, default popup open, etc. by adding to the function. My best practice for adding features is to never hard-code object names in the function, but pass them as parameters, so you can re-use the function.
I’ve seen a ton of people handle this with a very tedious process involving variables to track what’s clicked and advanced actions to update/check the variables and once they’re all set, showing/activating a next button. Besides being kind of a lot of work, this approach isn’t very extensible or portable. What if your client suddenly thinks of another button they want to add? Now you not only have to add a new advanced action and variable for that button, but you have to update all of the old advanced actions to check for the new variable.
Captivate also has a canned approach that is described here:
Haven’t used it so I can’t vouch for it, but it seems a lot easier than the variable/ advanced action route.
My preferred approach is to write a javascript function that is flexible enough to handle any number of buttons, and then you can re-use the same function anywhere you have a similar interaction and if you need to add a button, you just add it, the function still works. The only trick is all of your buttons have to have the same name with a sequential number appended to the end, like btn_1, btn_2, btn_3 (“btn_” can be anything, like “fred_1, “fred_2”, you specify that in the function call). And the shape that you use to store the content needs to have multiple states with numbers that match their button, like state1, sate2, state3.
Let’s say you had the buttons named btn_1, btn_2, btn_3 and the multiState objects with state1, state2, and state3 called popupBox, and a hidden Next button on your timeline called next. Then the function could be as simple as:
function handlePopups(btnName, stateName, multiStateObjectName, nextButton) {
let visited = [];
let numberOfButtons = $(“div[id^=” + btnName + “]”).length;
for (let i = 1; i <= numberOfButtons; i++) {
$(“#” + btnName + i).click(function () {
cp.changeState(multiStateObjectName, stateName + i);
if (visited.indexOf(i) == -1) {
visited.push(i);
}
if (visited.length === numberOfButtons) {
cp.show(nextButton);
}
});
}
}
//call the function
handlePopups(“btn_”, “state”, “popupBox”, “next”);
The beauty of this approach is that if you need to add a new button, just be sure to name it btn_4, and name its state state4 and bingo, it works right out of the box. If you copy this to a different page, just change the parameters in the function call and you’re done.
It may seem intimidating at first, but I really believe you will get a lot further with Captivate by learning a little basic javascript than you ever will investing the time to get real handy with advanced actions. I work on Captivate every day and I haven’t written and advanced action in years. And I’m so much happier for it. YMMV.
You might find this tutorial by Paul Wilson helpful for this: