Two image interaction

Help, I’m totally new to Captivate! I am trying to create an interactive “builder” function, where people can click on different areas of image 1, and the corresponding areas will light up in image 2. Some of the areas on image 1 will be “incorrect” selections, and nothing will light up on image 2. Can someone point me in the direction of the right kind of interaction to use?

The post Two image interaction appeared first on eLearning.

Pretest and Frustration – Setup


Yesterday I published an example project, based on a question in this community. The user wanted to add a learner-friendly feature to a pretest: if it would become impossible to obtain a passing score, the learner should be navigated immediately to content slides. I described a similar workflow 7 years ago, but for normal quiz slides. Same setup is impossible for the default Pretest slides, because one of their limitations  is that you cannot trigger an advanced nor shared actions with the On Enter event of the slide. That is possible with normal quiz slides, which I used in the example file. This blog explains the setup.


Several variables were used in the file, both quizzing system and user variables:

System variables

cpQuizInfoPointsPerQuestionSlide: reusable variable, has the max score which the learner can get on the active quiz slide

cpQuizInfoPointsscored: the points scored so far by the learner, is updated after the Submit button is clicked.

cpInfoLastVisitedSlide: is used to check if the learner gets to a slide from the previous slide or from another slide (because getting a passing score has become impossible.

User variables

v_MaxPretest: has to be defined with the maximum score possible for the Pretest. In the example file I could have used the system variable cpQuizInfoTotalQuizPoints. I preferred not to do so. If the developer wants a final quiz in the same course, that variable has to be manipulated with JS or with the CpExtra Widget (InfoSemantics).  The value has to be filled in on definition, in this case it was 40 points. All questions also have penalty, and partial score for MCQ with multiple correct answers.

v_PassPerc: required pass percentage for the Pretest. As explained for the previous variable, I preferred a specific variable instead of the system variable cpQuizInfoPassPercent. The value has to be filled in on definition, in this case it was set to 80  %.

v_PassScore: will be calculated from the two previous variables (is same in the example as cpQuizInfoPassPoints.

v_MaxUntil: will be calculated. What is the maximum score the learner would have gotten until the present question (all answers correct).

v_MaxRemain: will be calculated. What is the maximum score the learner can obtain with the remaining questions? Logically the sum of v_MaxUntil and v_MaxRemain should be equal to v_MaxPretest.

v_Possible: will be calculated, what is the maximum score which the learner can obtain if he/she gives a correct answer to all questions still to be answered.

Advanced Actions – Events

I used 4 advanced actions in the project. Three of them are triggered by On Enter Slide events, and one by all Success and Last Attempt actions for the quiz slides. I had only one attempt in each quiz slide.


This action is triggered by the On Enter event of the first Question slide.  No condition in this action, just a sequence of commands. It is meant to calculate the values of some system variables as you can see in this screenshot:

The variable v_Passcore is calculated from two other variables which had a default value. In this case it was 40 points  maximum score and 80% required for passing the test. Result will be 32 points for v_Passscore.

The variable v_MaxUntil will get its first value, which is the score for this first quiz slide.


Is also pretty simple, not conditional and is triggered by all On Enter events of the question slides, with the exception of the first one (used 6 times in the example file). On each slide the variable v_Until is increased with the new value of the question score on that slide.


This action is triggered by both the Success and the Last Attempt action of each quiz slide, in total 14 times.

The trick here is to calculate v_Possible, which is the maximum score a learner can still get after the present question, supposing he/she will give a correct answer to all the remaining questions  (value of v_MaxRemain). Learner already obtained a score stored in cpQuizInfoPointsscored. That calculation happens in the first decision ‘Maths’.

Second decision is conditional, and will navigate the learner out of the Pretest (Jump to Score slide) if he will not be able to pass the test.


This is the most complicated action, because it has to take care of three situations, each of them has a conditional decision:

  1. If the learner has finished all questions (last visited slide was slide 8, which is the last question slide), but did fail, (comparing score with v_PassScore).  In that case the appropriate state of an multistate SVG and a  multistate text container is shown.  The Next button appears as well.
  2. If the learner has not finished all questions, (last visited slide was not slide 8) another state is made visible for both multistate objects, and the Next button appears.
  3. If the learner has a passing score for the test, another state is shown and not the Next button, but the ‘ToTest’ button appears, which will navigate the learner to the results slide (from which a separate quiz file can be launched).

Next button has the usual ‘Go to Next Slide’, whereas the ToTest’ button jumps to the results slide, which is the last slide in the example file.

The post Pretest and Frustration – Setup appeared first on eLearning.

Button Sets

Does Captivate have a “Button Set” feature?

Here is what I mean by a “button set” feature:

I’m creating a tabbed interaction with 6 tabs. When the user clicks Tab 1, the tab’s state will change to “active” (different shade of blue than the normal state).  When the user clicks Tab 2, tab 2’s state will change to “active” and change tab 1’s state to “Visited”, and so forth. However, the user can choose which tab they want to start with, so the user will not always go in order…1, 2, 3, etc.

I have seen in other software where you can group all the buttons together into a button set, so that the button’s  will change it’s own state to active and change which ever button was active before the click action to visited automatically. The only thing we as the developer needed to do was indicate which content the action needed to display (and possibly indicate that all the other content that needs to be hidden).

Can this be done in Captivate without having to set up a variable and create a conditional advance action for each button?

The post Button Sets appeared first on eLearning.

Is it possible to integrate voice-recognition as a processing unit?

My title is perhaps ambiguous as I lacked exact technical terminologies; however, what I meant above was that: in terms of interactive quiz and test slides, are we able to process the voice input from the users using voice-recognition provided by a third party (for example google)? Then what the core system would receive was Text processed and put into word sending from that third-party. Finally, it should finish the whole sequence by in-house by comparing the received text and feedback the result on what certain words or phrases mispronounced. We are doing language blending course in Vietnam.

The post Is it possible to integrate voice-recognition as a processing unit? appeared first on eLearning.

Change state variable to endlessly select and deselect an image

Dear community,

I have created a slide in an online module where I ask learners to select up to 4 images. The images are inserted in gray scale (state 1) and when selected change state to their colored version (state 2). Now due to their task it is possible that they decide to deselect an image again after having selected it in the first place.

For this to work I created a variable (“clickendlessly”)  and when running the Advanced Action (conditional) the variable “is equal to 0” so that a click on an image changes its state to state 2 (color). The variable is toggled so “if ELSE” by clicking again it changes back to gray (state 1). So far so clear.

Now, when I switch between the 4 images, e.g. I first clicked image 1 and it changed its color to state 2 and I click on image 2, what happens now is that the first click kind of only selects the image and only when selected by clicking it again the advanced action is “released” and change of state therefore needs a second click. Once selected I can change state again and again. But as soon as I move on to another image I need to select the image first (click 1) and change state/color works only with click 2.

Question: Is that how it is and I have to live with it OR is there any way around it? So that whenever clicking on an image it changes color right away, no need for the “pre selection process”?

Help would be great!

Thanks in advance!


The post Change state variable to endlessly select and deselect an image appeared first on eLearning.

Toggle to Slide In/Out


This post is meant as an answer to a thread posted in the eLearning community. “I want to create a menu that slides on and off the screen, like a door that moves to the left and right, when the user clicks a button.” I invite you to read the comment by Greg Stager who is posting some links to blogs he wrote where JS is used to create slider solutions. As you know, I often try to use only Captivate features to solve similar use cases instead of JS. This is a new example. You’ll find a step-by-step workflow to recreate the example I show. The shape (which I use as ‘box’) is not having a menu, I invite you to (re-)read my post about Hyperlinks for the creation of a Dropdown menu. That way you can avoid creating multiple interactive objects in the ‘box’.

If you don’t feel up to create advanced actions, I have an offer at the end of the post as an alternative 


Watch this short file,  three slides a title slide. The three slides have two buttons (from the Assets panel in 11.5): a Next button on top, and the Slide toggle button below it. You can use the toggle button as many times as you wish on a slide. To restart, refresh the browser.


Step-by-step workflow

Step 0: Next button on master slide

I used only one master slide in this project, which made it easy to put the Next button on that master slide. I kept the default option ‘Pause project until user clicks’ (Actions tab ). That will result in having each slide paused at its last frame.

Step 1: Sliding assets

Two assets have to be created and put on the first slide where you want to use the sliding box:

  • Sliding Box: I used a rectangular shape, labeled SS_slider. You can add content to it, but make sure that you check the Options tab, because you will need both the size and the exact x/y coordinates. Here a screenshot of my setup, since it was in a non-responsive project you see both size and location in px. If it was a responsive project, it would have been in %. Put the box in the wanted position after sliding in.
  • Toggle button: (SB_Slider) will be used both for slide in and out. You need to create an extra custom state for this button, I labeled it Out. Remember that Rollover nor Down state can change when you switch from the Normal to the Out state, hence make those states neutral (I did not add text to them).

Time the Sliding Box and the Toggle button for the rest of the project, rest of the project, with the option ‘Always on top’. Screenshot of Timeline:

Step 2: Custom Out Effect

Create a time-based effect to get the sliding box out of the stage. Do not use an Exit effect, but a simple motion path. I added an AlphaFromTo effect as well (100% to 0%), and reduced the duration of both effects to 1 second.

Workflow to save this effect as a custom effect is described in detail in this post. Do use that method after you have done step 3:

Step 3: Create Guides

Show the Rulers (View menu) and create two vertical guides, through the start and end point of the motion path. See this screenshot:

They will be needed to create the In Effect, to be exactly the opposite of the Out effect. Now you can save the custom effect, and take it out from the slider box.

If you didn’t use a horizontal motion path, you’ll need also horizontal guides. More information about the use of Rulers and Guides in this post.

Step 4: Move slider box in Out position

Use the guide in the scratch area to move the slider box to the correct position. I mostly use shortcut key (SHIFT or CTRL combined with left arrow) to keep that movement horizontal. For a non-horizontal movement, you use vertical and horizontal guide. You’ll see a screenshot of the new position in step 5

Step 5: Custom In Effect

Create this effect using the two guides (or four if you needed also horizontal guides). In the screenshot you see this effect, where I combined a motion path effect with an AlphaFromTo effect (0 to 100%). Save the effect, same as for the Out custom effect.

Step 6: Hide Slider box

Use the On Enter action of the slide to hide the Slider box.


Next three steps are bit tough,  you could skip them and scroll immediately to the offer at the end.

Step 7: Variable v_slider

Create a user variable, which I named v_slider. It will be used to track the status of the Slider box: in or out? Similar logic you’ll be able to see for all the Toggle buttons in this older post.

Step 8: Advanced Action ResetSlide

Create this (conditional) advanced action :

The highlighted items in this action will be parameters if you convert to a shared action. Beware: the name of the custom effect cannot be a parameter! I used TestIn and TestOut as names, you can replace them by your names if they are different.

Step 9: Advanced Action ToggleSlider

Create this conditional action. Similar to the previous actin, I highlighted the 4 parameters in case of conversion to a shared action.

Step 10: Attach the actions to events

The action ResetSlide has to be triggered by the Success event of the Next button, whereas ToggleSlider has to be linked to the Success event of the toggle button.


You can obtain the described actions as shared actions for free, including a short explanation of how to use them. You could skip steps 7 to 9, but still have to do the other steps.

How? Visit my website (, fill in the contact form with your request, and a small comment on my blogs or website. You’ll get everything by mail. I probably will post more offers in the near future, if you don’t want to hear about them, you can indicate that as well (I am European, honor the GDPR law).

The post Toggle to Slide In/Out appeared first on eLearning.

Conditional Actions

I’ve built a checklist that adds increments to a variable.  So learners will check off the items that relate to them and click ‘results’, this will then display their individualized next step. The desired goal is:

If variable is less than A – show A

If variable is more than A and less than C – show B

If variable is more than C – show C

The only thing I can see is the ability to show 2 of the options (using the else function).  Is the above doable?  Any tips would be great .

Alternatively, I was thinking about a clumsier option using actions to hide/show a different ‘results’ button that then displays A, B or C.


p.s. very new to captivate and self-taught.

The post Conditional Actions appeared first on eLearning.

Drag and Drop Question

I am working on a drag and drop interaction and having some difficulty.  What I want to do:  I want the drag zone to change states when the correct drag source is dropped and I want another state (including a video remediation clip) to show when the incorrect drag source is dropped.  I’m missing a step somewhere and haven’t been able to figure out what I’ve done wrong.  Any help would be greatly appreciated!

Thank you!

The post Drag and Drop Question appeared first on eLearning.