I am new to Captivate and have made starting out difficult for myself by creating a custom table of contents with progress indicators that learners can navigate through in a non-linear way.
I have designed a custom show/hide pop out TOC with a series of buttons for navigation to each potential module. I have given each module button a custom Completed state, and am also using the built-in Visted state as part of my AA's.
I want to have the state of the Module button in the TOC change to Completed (Green) when all of the slides in that module have been viewed. Because I want this course to be non-linear, the state of the Module button needs to change to Completed, irrespective of what order the slides are viewed in. For example, someone could start off in Mod 1, skip to Mod 2, then use the back buttons or sub-menu to return to Mod 1slides.
I have managed to set this up, but only by creating a variable for EVERY slide and executing a Conditional Action On Enter that specifies that IF Slide 1 AND Slide 2 AND Slide 3 AND Slide 4...etc. are equal to TRUE, the state of the Module button changes to Completed. This works, but it is extremely tedious to set up, so ideally I am looking for a faster approach.
Is there a system or user variable I can create to calculate the total number of slides viewed? How is this possible without re-counting a slide that has already been viewed? FYI - I am allowing users to resume from where they left off from my LMS.
I have a few other ideas going round in my head of how else I might be able to get this to work, but I would appreciate it if someone could tell me of a better way of setting this up before I waste too much time on this!
There is no system variable for the slides viewed. User variable is possible, but means you have to use actions to give it a value.
I have a couple of blog posts about creating a % viewed in a non-linear project. Not exactly what you need, but could be inspiring maybe?
Since you have already a user variable for each slide, you should use another type of shared action in which you use a counter variable. Use the On Enter actoin of the slide to increment the user variable, increment the counter variable only when the slide variable is equal to1. That way you have only the counter variable to check. I use that approach a lot because I prefer shared actions over advanced actions fro several reasons. In one of the demo projects I used during my presentation at the Adobe eLearning World conference I used that approach. It has been explained more in dettail in a blog (had no time during the presentation);
Thanks for getting back to me. I am unsure about the shared actions but I have changed my existing AA based on your advise which already makes this a lot quicker to set up than before.
I would still like to work out a way to automate this a bit more, so will explore what I can do with shared actions. I'm not getting it at the moment, so will revisit again soon.
Watch the recording of the session 'Deep Dive into Captivate with Shared and Advanced Actions'. It is still avaliable from this hub:
Or take my crash course, there is a step-by-step and a video version:
You have a typical use case for a shared action. No reason to be afraid of them...
Thank you for sharing those articles. I do not really have the time right now to explore shared actions in any depth and it is difficult for me to apply the logic of a completely different scenario to this one, especially as a beginner.
It seems to me that there is no way around having to create a unique variable for every slide if I want to track what slides have been viewed, thus making a shared action pretty redundant in that respect?
I have at least cut down the amount of manual work through your initial suggestion to use a counter variable, I think this will have to do for now unless someone in the community is able to share with me a specific example of when they built a custom toc (non-linear) with a shared action that tracks slides viewed in order to change the state of menu buttons to visited/completed.
Too bad, you are missing one of the better features of Captivate. But also ignored completely by the majority of Captivate developers, which makes me very sad. Wished I was able to train more.