Buttons on Question/Score Slides in Captivate 6?


On Thursday 4th of October I presented a webinar about my favourite new feature in version 6: shapes used as buttons. In this blog you could already read how to use those shape buttons on Master slides or timed for the rest of the project. Using them on question slides is a bit more tricky as I explained in the webinar. Question slides are always like difficult kids to handle, and this didn't change with regard to shape buttons. 

Individual Shape button

Inserting a shape on an individual question slide is not a problem, and there is no limltiation: you can even insert a button from the Buttons category (that is already converted to a button and has an action attached to it).

Some tips:

  • Be careful if you provide a pausing point for the shape button. A question slide has its pausing point by default at half its duration. This pause will be released after the second step in the submitting process (1st = Submit, 2nd = Y or click on slide). If the shape button pauses before the Question slide pause, clicking on it to do something (like showing a text caption, an image, playing audio) will not be possible after the second step of the submitting process is completed. If you have the shape button pausing after the question slide pause, the playhead will stop at that pausing point after the submit/Y process has been done which could confuse the user.
  • If the objects that pop up when clicking the shape button do cover up the question, do not forget to provide a possibility to hide them again, either with the same or with another button.
  • It will probably be necessary to reset everything when returning to the slide (if this could happen, perhaps for a second Quiz attempt or Review). You can use the On Enter event of the slide for that purpose.
  • It can be annoying to select an object on a Question slide that is not one of the native Question slide objects that have always priority. It is much easier to select them in the Timeline than on stage.

Shape buttons for multiple question slides

As you know from previous blog posts, the real power of shape buttons is that they can be used on master slides or timed for the rest of the project so that they can be used on multiple slides without having to copy/paste and to edit all (advanced) actions because the ID's of objects change on each slide. But here there are some problems for using those work flows on question slides as I discovered. Here is the history of my exploration, if you want to skip immediately to the example and how it was created, feel free:

  1. If you check the Timing dropdown list for a shape button on a question slide you'll see that the option 'Show for rest of project' is NOT available.Difficult kid.... you know :-) This means that the work flow where you extend the life of a shape button on a first question slide to all question slides is impossible.
  2. However it is possible to put a shape button on a Question master slide (you have to put them on all the master slides that you need for the questions). This work flow remains possible but has its restrictions: the shape button has no ID which means that it cannot be hidden/shown on discrete slides, it cannot be timed, and if you choose a pause (not to be recommended in this case) it will always be at the end of the slide. 

  3. When opening the dropdown list for the actions in the Action accordion, you'll have a new surprise: some options are dimmed, not available. You cannot show/hide anything, nor apply an effect. It is logical that Disable/Enable are dimmed as well, because none of the question slide objects can be controlled, and a shape button itself cannot be enabled/disabled. It is the only interactive object allowed on a question slide.
  4. But when you choose 'Execute Advanced Actions' and open the dialog box, you'll have another surprise: here the three actions banned from the simple actions list are available. That is a relief, isn't it? But weird...

  5. So I tried out an example - you'll see it in the movie. I wanted to offer the user a shape button that would pop up a text container (shape) showing the value of the present question slide (points attributed to it) and the score obtained until that question. For both data there is a system variable: cpQuizInfoPointsPerQuestionSlide and cpQuizInfoPointsscored. So this text container can be the same for every Question slide. The way to go is to create that Text container, display it for the rest of the project. That way it has a unique ID and can be popped up with the same advanced action on each question slide. Bummer, new surprise: you cannot time any object on a question slide, not even a text container, for the rest of the project. Why do I not use a simple text caption? A text caption can indeed be timed for the rest of the project, but.... as most objects on an Question slide it will always been stacked under the default Question slide objects like answers. And I want the popup message to be on top. And yes, this is indeed only possible with shapes used as text containers!

  6. "Never give up", trying to find a workaround. I put the text container shape on the slide before the first question slide (it is hidden anyway at the start), and.... it shows up on each question slide. So issue solved, kid (question slide) is 'tamed' by Lilybiri :-).

  7. Now up to the score slide, want to replace the review message by something that the user can pop up by clicking on a button. Trying to add a shape button to the score slide, and that is possible! I can add a rollover smart shape as tooltip without any problems. Now I add some hidden text container shapes, and I can use the Arrange menu to pull them to the front of the stack. Great! Created an advanced action to pop up the right text based on the Quiz result, works fine. But... the text containers will be behind the score text captions, another disappointment because I was able to use the Arrange menu. I also tried out to put the shape button with the action on the master slide used for the score slide, but same result: no way to get my text containers on top of the default text of the score slide. The simplest solution would be to create your own score slide, using the quizzing system variables of course.

Example movie

Watch this example: each question slide (3) has an Information button, toggling a text shape on/off. You'll read there the number of points attributed to the present question and the total score obtained so far. There is a button on the score slide (with tooltip) to show a review message.


Slide 1 (Title): has the text bubble QstInfo, that is invisible, timed for the rest of the project and put on top:

Master slides for Questions (here MCQ and Hot Spot) have a shape button (used the 'i' button from the buttons category) top right, that triggers an advanced action Quest_Info. The button doesn't pause. 

First Question slide (Q1) has a line shape StopLine that will be used to create the toggle aspect. It is timed for the rest of the project as well and placed on top like the Text bubble QstInfo on the first page.

Score slide: I deleted the review messages in Quiz, Settings, Quiz Result Messages and tucked the Review placeholder out of the way. I added a shape button InfoBt (from the buttons category as well) with another rollover shape as tooltip. Created two shapes with image and text that are initially invisible: OKReview and NotOKReview. The shape button InfoBt triggers a conditional advanced action Review

Advanced Actions

Quest_Info triggered by the shape button on the question Master slides is a conditional advanced action with one decision. To create the toggle aspect I used the approach explained in Toggle Shape Buttons - scenario 3, which needs a user variable v_visib. The more elegant scenario 4 from that article is impossible because the button is on a master slide.

Review is triggered by a shape button on the Score slide. It is again a conditional action with one decision, and self-explaining:


I hope that my struggle with the 'difficult' question slides will have led to some tips that could be useful for you. Again, shapes prove to be a game changer, even though there are still some unexplainable quirks. I'm waiting for your comments.

Widgets in Adobe Captivate (list)


If you have been visiting my blog you'll know that I wrote quite a lot of articles about using the Widgets that are available in the Captivate box (both in versions 5, 5.5 and 6). There is not much documentation about those widgets available. So I decided to list up the widgets, possible use cases and sometimes a link to blog posts that are explaining more in detail the use of that widget. And of course, added my own comments. Feel free to download the list, link is below.

Structure list

I grouped the widgets this way:

  1. Static widgets without variables (those widgets are supported for HTML5 output)
  2. Static widgets with variables (supported as well)
  3. Interactive widgets (not supported for HTML5 output)
  4. Question widget (not supported)

In the table you'll also see if the source code is available for the widget, which is the case for all, except the A3C widget.


Download the list from acrobat.com using this link. No need to have an Adobe ID.

Would appreciate if you let me know this list is useful, or if you want to add more comments. It is limited on purpose to the widgets that are included with Captivate. If you are looking for external widgets, I recommend visiting the Widget Treasury.

Intermediate Score Slides


Even in Captivate 6 only one quiz per file is possible, although you can have a pretest as well in the same fle. A question that often appears on the forum like the one in this thread: "...I'm adding a quiz for each of the individual sections within a file (3 in total). I'd like for the user to see how well they've done in each section, but there is only one score page in my project and it only comes up when the quiz has been completed". 

In this post I'll try to explain a possible solution, with custom score slides after each section similar to the default score slide that pops up after the last question slide of the file. Have first a look at the example movie to see the result.


You'll find three sections with only a quiz in this example: Geography, Politics, General (subject = Belgium). Of course, normally you'd have also content slides in those sections but I suspect that regular readers of my blog do not need those any more. You can take the quizzes in any order. When you have finished all quizzes, a button will appear that will navigate you to the Total Score slide, which is the default Score slide. I think my custom score slides are prettier :-)

Scores of the different sections, question slides can be found in this Advanced Interaction view:


You have seen this sequence of slides:

  • Slide Intro with Continue (Shape) button
  • Slide Choice where you can choose the subject (3 shape buttons with simple Jump to actions); after a quiz the user is navigated back to this slide and completed quizzes are marked; when all quizzes are done the (shape) button Total Score (Jump to last slide) appears on this slide;
  • Slide Group Geography: with 3 Question slides (Q1_Geo, Q2_Geo, Q3_Geo) and a slide GeoScore; maximum possible score = 10p
  • Slide Group Politics: with 3 Question slides (Q1_PolQ2_PolQ3_Pol) and a slide PolScoremaximum possible score = 15p
  • Slide Group General: with 4 Question slides (Q1_GnrlQ2_GnrlQ3_Gnrl, Q4_Gnrl) and a slide GnrlScore  maximum possible score = 20p
  • Slide TotalScore   


To keep track of the score and the number of correctly answered questions for the partial quizzes, I created user variables. The percentage is calculated and stored in another variable. In the example those variables are shown only on the intermediate Score slides, but if wanted a summary can be offered at the end, showing the results for all sections.

Since there are 3 sections, I have 3 trios of variables, none has a default value to start with:

  • v_geoscore, v_geoqst, v_geoperc will store values of score/correct questions/percentage for the Geography quiz
  • v_polscore, v_polqst, v_polperc will store values of score/correct questions/percentage for the Politics quiz
  • v_gnrlscore, v_gnrlqst, v_gnrlperc will store values of score/correct questions/percentage for the General quiz

Another variable v_null (empty variable) was used to check if a Quiz had a result to mark the Quizzes as done in the second slide Choice, and eventually present the button to advanced to the Total Score.

Advanced Actions

With this article I focus first on the intermediate score slides. I didn't calculate the maximum possible score, nor the total number of questions, but just typed them in.

To populate the defined variables (score, number correct questions, percentage) I used the Quizzing system variable cpQuizInfoLastSlidePointScored. This variable is reused after each slide, so I can only get use it immediately after each question slide. That is the reason for the advanced action, triggered on entering the question slides, starting with the second question slide. The action is the same for all question slides in a section. Here is an example for the section Geography:

Conditional advanced action Ent_Q_Geo

This action is triggered On Enter for slides Q2_Geo (for the first question slide) and Q3_Geo (for the second question slide).

I adopted the (almost) the same way as Captivate to count the number of correct questions: for questions with partial scores, the question is counted as correct if only part of the question is correct. Not totally the same way, because I require that the score has to be positive, because with Captivate depending on the penalties even a negative score is possible for a question with partial scores and one part correct, rest incorrect. That is the reason for the IF: score of the previous question has to be positive. In that case the variable v_geoqst is incremented. Both for correct and incorrect questions the score is added to v_geoscore.

For the groups Politics and General a similar action has to be created. It will be applied to all question slides except the first of the section.

Conditional advanced action Ent_Q_Geo

To add the result of the last question slide, I used an On Enter action for the score slide, that is different because it has also to calculate the percentage to be shown (v_geoperc) and to show the proper text caption for Success/Failure.

This action has two decisions: 

QPrevCorrect: has the same statements as Ent_Q_Geo plus the statements to calculate the percentage. As mentioned I did type in the maximum possible score (10, 15 or 20 for the 3 quizzes). 


Passed?: shows the proper text (used a smart shape as text container), based on the result.



This article did focus on how to create intermediate score slides.  I will not explain in detail the work flow I used for the choice slide to mark the visited quizzes, which was done with another conditional action. I used also the new discovered functionality that you can have two smart shape buttons in an exact same location and switch between them (see toggle shape buttons)

Workshop Advanced Actions - DevLearn 2012

Preconf Workshop Advanced Actions


 If you are a regular visitor of this blog, you will be surprised that this time you'll not find a tutorial. I am so looking forward to be able to train for the first time "IRL" about the subject I have been exploring since a couple of years in this blog: Advanced actions to extend Adobe Captivate's functionalities. And while preparing this workshop (and some other presentations for DevLearn) I wanted to share my excitement with you.

Training approach

My students are well aware of my ideas for efficient training, but you probably only know me from written tutorials. I'm the kind of trainer that loves throwing the student in the water, a lot more than trying to explain how to swim... and I'm persuaded that a training is a lot more efficient if the trainee has made a lot of mistakes (even stupid ones) and was able to find the reason for the mistake and enjoyed the discovery of a solution.

This approach is natural to me, since it is my personal preffered way or learning as well. You all know that finding good documentation, books about advanced actions in Captivate is a tough, almost hopeless adventure. I gave up that search a long time ago, and just plunged into them, learning from all my stupid mistakes. And then I tried to solve use cases for other users, thanks for helping me to learn more. I hope now to be able to share the results of those learning experiences in this workshop. 


We'll spend some time to discover things, using small exercises in the morning session.  Be sure: you'll get a list with tasks to choose from, both for total newbies and other attendees. And... it is not forbidden to cheat! Perhaps your neighbour has accomplished a great way to solve her/his chosen task!

  • System variables:
    • to show info and save time
    • to perform action
  • User variables (take control)
  • Variables associated with TEB and widgets
  • Snippets (bit hidden) = small advanced actions
    • attached to available shape buttons
    • how to edit to extend their power
  • Custom navigation for your project
  • Shape buttons: powerful and new
  • Simple vs Standard action
  • Conditional action with one decision
  • Condtional action with multiple decisions
  • Events
  • Reusing actions,variables with template

And let's design a simple game in the afternoon session, after all we are in Las Vegas, not? You will be using the discoveries of the morning and learn some good practice, tips and tricks:

  • analysis of possible situations: 
    • collaboration with colleagues
    • worksheet with example analysis
  • choosing events, variables
    • avoiding pitfalls
    • reusing variables
  • labeling can save a lot of time
    • beware - I'm a labeling freak
  • conditional actions: use of flow chart
    • useful and a necessity for complex condtitions
  • work flow for creation actions and testing
    • using copy/paste intelligently
  • timesaving tips/tricks

What do you think?

As usual, I'm hoping to read some comments on this writing. Even if you will not be able to participate in this training. Add your ideas, would appreciate it more than ever. I'm so looking forward to this workshop. 

I'm copresenting as well on the DevLean conference with two great friends : 

Engage Learners with Widgets and Effects in Adobe Captivate  with Joe Ganci

Best of Two Worlds: Integrating ZebraZapps Interactions in Captivate  also with Joe Ganci

Rapid Development Tool Showdown: Captivate vs. Lectora  with Rebecca Goldberg

System variables in Captivate 6


Update: for readers using Captivate 7-9, updated list with system variables in this article.

Quite a while ago I wrote some articles about using variables in Captivate 5. And they had links to complete lists with the system variables available in that version. Nothing much changed for 5.5 but now in version 6 there are not only a bunch of new variables, but the old variables starting with 'rd' have disappeared (from lists). At the end of the article you'll find the link to download a pdf with all the system variables, grouped in categories. For each variable I offer you the explanation (not always the same as in the Variables dialog), the type (number, text, Boolean or other), Default value (if available), comment (sometimes with a link to an example). 

In this article I will focus on some tips, and on the new variables in the categories.

1. Movie Control

This category is very important, because most of the system variables here can be controlled by using simple or advanced actions. One exception: cpCmndPlaybarMoved is an internal variable, read-only.

Deprecated old variables starting with 'rd' have been replaced, in the list those names are orange instead of white. Their functionality remains the same. 

  • cpCmndGotoFrame & cpCmndGotoFrameAndResume
  • cpCmndNextSlide & cpCmndPrevious
  • cpCmndPause & cpCmndResume

Warning: in version 5.5 both variables cpInfoCurrentSlide and rdInfoCurrentSlide (see next category) existed, now the last one is not available in dropdown lists any more. But they were not identical: numbering for cpInfoCurrentSlide starts with 1, whereas it starts with 0 for rdInfoCurrentSlide! In a some of my blog posts about 5/5.5 I used this statement to Replay a slide in advanced actions:

Assign cpCmndGotoSlide = rdInfoCurrentSlide    (in CP5/5.5)

This worked fine because both variables started with index 0. In 6.0 you can still create the same statement, by choosing the option 'literal' instead of 'variable' and typing in the rd-variable (not available in the list). If you do not like typing, you have to replace the previous statement by:

Expression cpCmndGotoSlide = cpInfoCurrentSlide - 1  (in CP6)

This explains the perhaps confusing snippets (small advanced actions) attached to the shapes in the button category. Have a look at the buttons Start (snippet: startSlide) and End (snippet: lastSlide).

New variables: only one cpCmndTOCVisible allows you to show/hide the TOC if this is in Overlay mode. It is a Boolean variable, with default value = 0, which means that the TOC is not visible.  Too bad that this variable was not added in the dropdown list for "Assign" in the Actions accordion. This list only shows these variables like in previous versions:

  • cpCmndShowPlaybar
  • cpCmndMute
  • cpLockTOC
  • cpCmndCC

2. Movie Information  

All the variables in this category are read-only. They are often used in combination with the Movie control vars described above.

Deprecated old variables: marked again in orange in the table:

  • cpInfoCurrentFrame
  • cpInfoFPS
  • cpInfoFrameCount & cpInfoSlideCount

Not replaced: rdInfoCurrentSlide  (see Warning in 1. Movie Control)

New variablesnone


3. Movie MetaData

Those variables are also read only. Most values are looked for in the fields of the Project Information dialog box. Two mystery variable are cpInfoCourseID and cpInfoCourseName.  The explanation in the Variables dialog box points to the same Project Information, but no fields are available there. I also checked if they point perhaps to the SCO information, but seems not to be the case either. Perhaps the mystery will be cleared ... in version 10? 

No new variables, no deprecated ones neither in this category.

These variables are useful to insert in Text Captions on (master) slide or in templates, instructing the user to fill in the fields in Project Information.


4. System Information

Logically those variables are also read-only, can be useful in the same way as the variables of the previous category. Sorry for the comments about certain variables that seem to assume that all Captivate users should be American. 

No new variables, no deprecated ones neither in this category.


5. Quizzing

All variables in this category are (still) read only. With a lot of new features in Quizzing, there are several new system variables available. Not enough for me, as you can detect from some of my comments in the table. 

There are no deprecated old variables, all were already cp-variables.

New variables

cpInQuizScope: Quiz scope is now dynamic, whereas in previous version the scope was very 'rigid', linear, starting with the first slide having a scored object (question slide or scored interactive objects) and finishing with the score slide or - in case of no score slide - with the last slide having a scored object. No way to jump out of that sequence of slides, which caused a lof ot frustration. In Captivate 6 the scope starts the same way, but now the scope will extend dynamically when the user jumps out of the sequence to view a content slide. It will only end when the user views the score slide. This system variable, if you insert it in a text caption (on master slide or timed for all the project) will show you whether you are in a quiz scope. It will have the value 0 (default) before the first slide with a scored object. Then its values switches to 1, will remain so until the score slide has been viewed.

cpQuizInfoNegativePointsOnCurrentQuestionSlide: Penalty is now possible, and this variable will show the maximum Penalty on each question slide, it is a reused variable. Its positive companion is cpQuizInfoPointsPerQuestionSlide. Do not confuse with the points scored by the user for a question slide, which will be stored after the slide in the variable cpQuizInfoLastSlidePointScored.

cpQuizInfoPretestPointsscored:  this will be populated with the score obtained for pretest question slides only. Its counterpart for the real test is cpQuizInfoPointsscored. This last variable is visible on the score slide.

cpQuizInfoPretestScorePercentage:  is the pretest version of cpInfoPercentage (which is for the real test, visible on the score slide).

cpQuizInfoPartialScoreOn: for questions where you choose the option partial scoring this variable will have the value 1, whereas the default value (no partial scoring) is 0.

Missing variables

I really think some more variables should be available. If you have a look at the Advanced Interaction view (F9) for a project that has a pretest as well as a normal test, you will see that the value of Total Points is the sum of the maximum possible scores for both pretest and test:

This shouldn't be a problem, you can see clearly the difference in this view between the pretest and normal test questions. But I have problems with:

  1. cpQuizInfoTotalProjectPoints/cpQuizInfoTotalQuizPoints: both variables will have the same value after the project, although they are not populated at the same moment. BUT: this will be the same total as you see in the Advanced Interaction view. This means that you do not have the separate values of the maximum for the Pretest and for the Test, and that there is no system variable available for the maximum score that is visible on the Score slide (which is for the Test only). If you want to create your own score slide, you'll have to do some maths yourself or by advanced actions. Same if you want to show a score slide for the Pretest alone (which is by default not available).
    I would like to have a system variable for the maximum score of the Pretest (that is used by CP to calculate cpQuizInfoPretestScorePercentage) and for the maximum score of the Text (use by CP for cpInfoPercentage).
  2. cpQuizInfoTotalQuestionsPerProject/cpQuizInfoTotalUnansweredQuestions: again, the numbers will be the sum for Pretest and Test. And the values shown on the score slide are for the Test only. System variables to create a custom score slide are not available, whether you want one for the Pretest or for the Test.

  3.  cpQuizInfoTotalCorrectAnswers: happy to tell you that here only the Test questions are counted, not the Pretest questions. However, if you have activated partial scoring, you have to know that a question is counted correct always when at least part of the question is correct. Depending on the settings, this can mean that a question is considered correct even if it has a negative result (example: many answers, one correct, lot of penalties for all the incorrect answers). That seems a bit weird.


The PDF is no longer available, please download the table with system variables in CP8, link is in the top of this post. There are indications about changes with former versions.

Reset Effects in Captivate 6


For a recent webinar about conditional advanced actions I recreated a file in Captivate 6 to check a Sequence of clicks, as described in the article. You can play with this file in the Example section. In this version I used a lot of custom motion path effects to put the cards on a stack. If the sequence is not correct, there is a reset button to offer the user a new attempt. And that meant that the motion effects had to be reset. I was very happy to find an easy way for this work flow, and that is the goal of this article.


Play with this movie that has only 4 slides: on the first slide you choose between two ways of playing and will be navigated to either the second or third slide depending on the choice. On slides 2 and 3 in case of wrong answer you can reset the cards to their original position, on slide 2 this will happen with the Next button, after you checked the sequence with the Question Mark button. On slide 3 you have a reset button? Last slide will only be reached in case of a correct answer. Want to cheat? The sequence is 57142

Work flow

The work flow is pretty simple: you have to return to the very first slide, and using an advanced action on entering that first slide, redirect again to the slide just left. And the objects that had moved will be back in their original place, the effect is reset. I tried out different other work flows like navigating to the previous slide, but for some reasons it only is functional if you return to the very first slide. In the example movie, the On Enter action for that first slide is a bit more complicated because I have some more actions to be done, but in the next example I keep it really simple, just having the focus on resetting the effects.

Second example with details


This example has 5 slides: Intro, TimeBased, ButtonTrigger, AATrigger and Summary. On slides 2,3,4 you'll find an effect applied to one object, first time-based, then triggered by a button and at last one triggered by an advanced action attached to another button. On slides 2 and 4 other objects with effects will appear, which was not possible for the slide with the button that triggers an Effect, because you can only apply one effect that way.

Shape buttons

I used default buttons from the Shape Button category, but changed the triggered actions. On the Intro slide there is only a Next button (used a rollover shape as tooltip). On slide 2 you'll find 3 buttons, timed for the rest of the project (and hidden on the last slide Summary). Each of them has a tooltip as well, and they all have a pausing point near the end of the slide, but play button pauses a little bit before the others:

Reset button: the default action for this button is 'StartSlide', and this is what I wanted it to do.

Play button: has a different functionality, depending on the slides

  • on slide 2 (TimeBased), slide is paused on entering, and this Play button will just release that pause by the statement 'Assign cpCmndResume with 1'. The playhead will continue, and the three objects that start on different moments will get visible with their effect.
  • on slide 3 (ButtonTrigger): no need to pause on entering, I covered the original play button with a transparent shape button that triggered the Effect on the hexagon by a simple action, thus limited to one object with effect.
  • on slide 4 (AATrigger): no need to pause on entering; again I covered the original play button  with a transparent shape button that triggered an Advanced action NewApply with two statements: "Apply Effect..." and "Continue". This button pauses at exactly 1secs, whereas the other objects appear after that time (see timeline). The Continue statement is needed to release the play head so that the other objects appear with their effect.

Advanced Action EnterIntro

This action, triggered by the On Enter event for the first slide (Intro), has to be conditional. It has to check if this slide is visited for the first time. To achieve this I created a user variable v_visited (no default value, so empty to start with) that will be set to 1 when the slide is visited for the first time. On all following visits, the user is navigated back to the last visited slide, the slide on which he clicked the Reset button. And that makes the magic happen: the object that was moved by the applied effect is back in its original location. The conditional action is rather simple:

IF v_visited is equal to 1

THEN Go to Last Visited Slide

ELSE Assign v_visited with 1

When returning to the last visited slide, all objects will be in their original place. Even if you have clicked twice the Play button! Try it out with the example movie. You'll see a different behaviour depending on the slides:

  1. On Slide 2 (TimeBased): pressing the Play button a second time will not have any effect, since the play head has stopped at the pausing point of the Next/Reset button and all effects have been played.
  2. On Slide 3 (ButtonTrigger): pressing the Play button another time will replay the Effect, since it is triggered by that button. But motion effects are always relative to the present position of the object. So.... the hexagon will move outside of the stage. 
  3. On Slide 4 (AATrigger): if you press the Play button again, the hexagon will move again (outside of the stage), but not the other objects. Their effects were time-based and the play head is at a position after those effects. If I had applied the effect to those objects by the Advanced action as well, they would have played. But then it was not possible to start the effects at different times.

Toggle Shape buttons - Captivate 6

 DevLearn 2012: Info


One of the well visited articles on this blog is Toggle button in which I explained how to create a custom button to change the state of the playbar, CC, audio from On to Off and vice versa. I explained there as well how to use the same Expression with a boolean user variable instead of one of the available boolean system variables.

In versions before Captivate 6 it was necessary to have such a button on each slide, cumbersome, even if they had always the same advanced actions attached to them so that Copy/Paste would do the trick. But now we have .... shape buttons that can be used both on Master slides or timed for the rest of the project as I explained in 'Why I like Shape buttons'.  This article had some simple use cases and I promised to show the scenario for a real toggle button. This is the subject of the present post, explaining how to create a toggle button to turn off/on Audio. There will be a companion video on YouTube showing the work flow. I'll offer you different scenarios, starting with a very simple one, and ending with a button that really shows the state of the Audio.

Scenario 1:  Shape Button with simple action

In the Shape category Buttons, you'll find a Mute button. It is already configured as a button, but without pausing and has a simple action attached to it:
Assign cpCmndMute with 1 

You can put this button on the main master slide, so that it shows up on each slide of your project, or you can put it on the first slide of the project and time it for the rest of the project.

If course this is not a toggle at all, it only allows to mute audio. And the user will hear, but not see the 'status' of the audio. Personally I think the icon on the button is misleading, because it seems more to point to 'play audio' instead of 'mute audio'.

The easiest way to change this shape button into a real toggle that can mute/unmute the audio is to change the Assign action into:

Assign cpCmndMute with 1 - cpCmndMute

This works fine, but from my recent article Why Choose Standard over Simple Action you know that if the shape button is paused, clicking on it to mute/unmute audio will also release the play button. And of course, the button will always look the same, will not show its status.


Scenario 2: Shape Button with standard action

You get it: change the simple action to a standard action, and the play head will not be released. To have it on each slide, you can again choose either to put it on master slides or to time it for the rest of the project on the first slide.

But still you are always looking at the same icon on the button, no difference between mute/unmute. Up to the third scenario:


Scenario 3: Shape Button with conditional action

You need two items to show the change of state. In my example I used a line shape, not functional as button, that would cover the original audio button in unmuted state:

The idea is to show/hide the line shape depending on the current state of the audio. The conditional action has to be able to address the ID of that line shape. Since objects on master slide do not have an ID, they cannot be addressed by an advanced action. That leaves me with two possibilities:

  1. Putting the audio button shape (from the Smart shape category Buttons) on the main master slide, and the line shape on the first slide, timed for the rest of the project.
  2. Putting both the the button and the line shape on the first slide, timed for the rest of the project. Both get an ID in that case, and I'm even able to group them.

Because of the low priority of objects timed for the rest of the project (as I explained in the blog post about Shape buttons), it is necessary to check 'Place Object on Top' for shapes that are timed tha way. It is up to you if you want pausing, hand cursor... Here is a screenshot of Timing and Options for the button shape. For the Line shape I only have the option 'Place Object on Top' checked and on the Timeline the line is above the button, not to be covered up by the fill of the button of course.

Conditional action

This action has 2 decisions:

  • Always is a mimicked standard action, that toggles the value of cpCmndMute the same way as in the standard action of Scenario 2
  • CheckAudio checks the value of  cpCmndMute, if it is 1 it will show the shape line, if not it will hide it.


Scenario 4: switch Shape buttons !!!

Yes, indeed, this was a very exciting discovery: you cannot have two regular button in the same location on a slide, even when you hide/show them alternatively. I explained this in the first article about Toggle button. But Shape buttons are different: you can have two of them in exactly the same place and this will now allow you to do the real stuff: a totally different shape to Mute and to Unmute audio. I really hope that all the users I had to tell that this was not possible before, will read this article. 

Watch this one slide movie, click the Stop button (shape filled with an image), it will switch to the Play button.

Both shape buttons trigger a standard advanced action, StopAudio, PlayAudio. SInce the audio plays on the slide when the movie starts, the Play button is initially set to invisible. And since both are shape buttons, you can put them on the first slide and time for the rest of the project to have the toggle available on all your slides. Like with scenario 3 putting on the master slide is not an option because the shapes need an ID to be used in the actions.


What I explained for an Audio toggle can of course be applied to all your toggle buttons: turning on/off CC, Playbar, opening/closing a TOC in overlay (with the new cpCmndTOCVisible variable), Play/Pause (video tutorial will be posted on YouTube), etc.

Why I like Shape Buttons - Captivate 6!


In my first blog post  and video about the recently released Captivate 6 I mentioned that my favourite feature is not Themes (certainly not :-)), nor HD Video, nor HTML5 publishing, nor Quiz enhancements, nor Actors/interactions but the new Shapes! Beware: I do not love them because of the design of the default shapes (why not enable adding custom shapes, or inserting SVG-images), not because of the editing possibilities (too limited, lacking tools for editing Bezier curves like pen),  little bit because they are vector-based, but really because they double both as Text containers and as BUTTONS

Today I want to show you why Shape buttons are for me the feature that will save me a lot of time.


Difference between buttons and Shape buttons

Both regular buttons and Shape buttons have the same list of possible actions (on Success/After Last attempt), including the possibility to execute an Advanced action or Javascript. 

Creating a custom shape button is easier than creating a normal button: you can use one of the default shapes, convert it to a freeform shape and edit to your wish. You can fill it not only with a solid color, but also with gradients, with textures or with an image. 

The real value of a Shape button over another button (or click box) is:

  1. You can use a shape button on a Master slide, even on the Main master slide, which is not possible for any other interactive object, not even for the Rollover slidelet (kind of hybrid between non-interactive and interactive). This is a timesaver, because it allows to put custom buttons that have to appear on all slides on the main master slide, or if you want different sets of buttons, put them on normal master slides.
    Drawback: the shape button on the master slides will not have an ID (label), so it cannot be addressed by an (advanced) action. I logged a feature request to have this ability in future versions. Another drawback is that for buttons on the Main Master slide, you do not have an option 'Master slide objects on top', so you have to be careful that the button is not covered up in the normal slides.
  2. You can put it on the first slide of a project and set its Timing for the rest of the project. That is an alternative for buttons that you want to see on all slides. Moreover the shape button will have an ID in this case, which means that it can be addressed by an (advanced) action, like being hidden on certain slides.
    Drawback: an issue that I already discussed in this article 'Stack order and Master slides' is that the button will normally be at the bottom of the stack on slides where it is not really present (from the second slide on in this case). It will be even under the master slide objects, and unchecking 'Master slide objects on top' doesn't help. It is possible however to check the option 'Place object on top' when timing for the rest of the project.

Here are some negative points:

A normal button has three states: Up, Over and Down to show user's activity, the Shape buttons are more limited: when pressed the image will shrink a little bit. For small shapes this is not that visible. 

Contrary to normal buttons, a shape button cannot have a score attached to it, nor report to a LMS. They will show up in the Advanced Interaction view (F9). 

Shape Buttons on Master slide - setup

After checking the option 'Use as button' in the properties panel, you can choose to have a Hint caption (no Success/Failure captions possible), to show the hand cursor, have a double click and opt for a click sound. All those are to be found in the Options accordion. 

Do not look for a Timing accordion, there is none because the Master slides have no fixed duration, they'll adapt to the slides that do use the master slide. And objects on the master slides will always be shown for the duration of the slide. But you have the possibility to have a pause for the shape button, also to be found in the Options accordion. Timing of that pause will always be at the end of the slide (like for click boxes).

As I mentioned before no label cannot be attributed to smart shapes on a master slide. They all show up the same way on the Timeline panel as you can see in the screenshot.

Use Cases

Shape buttons on Master slides are great if you want to have them on all slides (Main Master slides) or on a lot of slides (normal master slides) and you do not need the ability to change them on individual slides. Some examples:

  • A Next/Back button as you did see an example in previous screenshot. For this Next button I used the simple action 'Go to Next Slide'. The shape is a rectangle, filled with an imported image.
  • Toggle buttons to show/hide Playbar or Closed Captions. I use a standard advanced action, not a simple action so that the play head is not released (see recent video about simple vs standard action)

Shape Buttons Timed for rest of Project - setup

Such a shape button, on a normal slide, can be labeled as you can see in the screenshot below.

Check the same option 'Use as button', and in the Options panel you'll find besides the Hint, now also Success/Failure captions. You'll miss the Pause option here, because it has been transferred to the Timing accordion that is now available, just like for normal buttons.  You can time the pause, but be careful: this setting will apply to every slide, and is not dependent on the slide duration, so do not pause too early. You can delay the timeline for the button, which is not possible for shape buttons on a master slide. In the screenshot the shape button, timed for the rest of the project, will show on each slide after 1 second and pause after 2 seconds. 

I checked the option Place Object on top, to avoid that the shape button could be covered by another object on the slide or on a master slide. This is not always necessary, but you have to be aware of the shape button being at the bottom of the stack if you do not check this option.

Use Cases

Shape buttons timed for rest of project allow you to time the pausing point or the duration of its timeline on each slide but they are really better suited than shape buttons on master slides if you want to hide/show them on some slides without having to create another master slide. And they are also great if you want to simulate a changing button to indicate the state when toggling. Here are a couple of examples:

  • Next button has no sense on the last slide; with a timed for rest of project button this is easily solved by hiding the shape button on entering that last slide
  • Audio toggle or Play/Pause button, showing the state: this will be the subject of my next video... will keep you informed

Buttons Category

In the Smart shape flyout panel you'll see a category 'Buttons'. Have a look at them, most have a simple action attached to them (Go to Last Visited slide, Open URL/File), but some trigger an Advanced action. And personally I hope that we soon will be able not only to create and save custom shapes in that panel, but also to edit/create the advanced actions attached to them.

Some examples of (advanced) actions for the buttons category:

  1. Mute: is a simple action triggered by the audio button 'Assign cpCmndMute with 1'. Be careful, since it is a simple action, clicking on the button will release the playhead. You can convert it to a toggle by replacing the current action by 'Assign cpCmndMute with 1-cpCmndMute' but the issue with releasing the playhead will remain, and the button will not reflect the state (muted or not). I will explain in a video how to create a real toggle button for audio with changing states.
  2. startSlide: triggered by both the Start and Home button is an advanced action:
    The first statement navigates to the first slide. Wondering about the strange expression? It is linked with the fact that slide numbers start with 0, so to navigate to slide 1 in the filmstrip you need number 0. The second statement releases the play head, will try to explain in a future blog post the changes to the advanced actions for pausing/releasing.
  3. lastSlide: similar to the startSlide action:


I hope you understand why I like the shape buttons that much. And I will try to post more about them: tips to change the advanced actions, how to create changing states for toggle buttons etc. Let me know if you have other suggestions, please, post in a comment.

Graded Survey?


Another user asked for a solution to this problem, quoting:

" I'm creating a test where the students grade themselves between 1 and 5 on what they think their ability is for each category.. eg Public Speaking (1,2,3,4 or 5)

There is ten categories. But for each category, the answer they give needs to be multiplied by a certain number, which correlates to the importance of that skill in negotiating. eg

Public Speaking is important = ( number * 5 )

Maintaining Control Over Body Language is LESS important = ( number * 3 )

Questioning is the LEAST important = ( number * 1)

Initially she tried using the Likert question, but it has never a score. So I worked out another scenario


Take the test: one subject only 'Will I be a good teacher'? The percentage at the end should reflect the grade of ability based on your estimations. 

My scenario

I used Multiple Choice Questions as Survey questions. And for once I appreciated the fact that Captivate makes no difference between text and numbers. This was a pleasant and useful discovery: if you use numbers instead of characters for the answers, the value of the system variable cpQuizInfoLastAnswerChoice will be an number and... you can use this number in calculations using advanced actions.This made the solution easy, was glad that my Captivate intuition was correct. I tried to make the solution as simple as possible, because the user was kind of a newbie to advanced actions. Each category will be one Multiple choice question, with the choice of numbers for the Numbering option. All questions have the same possibile answers corresponding with the five grades of ability: 

  1. Very Poor,
  2. Poor
  3. Good
  4. Normal
  5. Excellent

When the user clicks the Submit button, the chosen answer number will be stored in the sysem variable cpQuizInfoAnswerChoice. This value changes after each answer and will be used to calculate the score for the subject.


I created some user variables:

  • v_subject: will store the subject for this list of questions, will be populated in the title slide for the subject; I inserted a text caption on the MCQ master slide  above the Progress indicator to show the subject on each question slide. This variable will get its value by a simple action (Assign) On Enter of the Title slide.
  • v_teacher: stores the cumulated score based on the estimated ability grades and the weight factor (depending on importance) for each category; this value will be calculated by an advanced action triggered by the Submit button. If there is no reason to keep this absolute score, the variable could be reused for another subject, and perhaps then you could better label it v_score.
  • v_maxTeach: will be used to store the maximum score that could be obtained if the maximum ability was indicated everywhere. Of course it could be replaced by a literal value, and in the example this was 100. But I thought it would be more versatile to calculate this maximum score, to avoid dreaded maths...and the calculations are done in the same advanced action triggered by the Submit button.
  • v_percTeach: will store the percentage for this subject, calculated from the variables v_teacher and v_maxTeach by an advanced action triggered on entering the 'score' slide.
  • v_multi: the weight factor for a category, will be populated by a simple action on entering each question (category) slide.
  • v_dummy: a variable necessary to compensate for the limited mathematical functionalities in Captivate, used only for calculations

Events - actions

On Enter Title slide: Simple action Assign v_subject with XXXX    (name of the subject)

On Enter Question slide (for each): Simple action Assign v_multi with .... (weight factor, number)

On Enter Score slide: Advanced action TeachCalcEnd

For each Submit button same Advanced action TeacherCalc

Advanced Actions


This action is triggered by Submit buttons

The variable v_dummy is first used to store the weight of the grade by multiplying v_multi with the chosen answer number (1-5); then the total score v_teacher is incremented with the result.

The same variable is used a second time to calculate the maximum possible score for this category by multiplying v_multi with 5 (maximum ability); and this is used to increment the maximum total score v_maxTeach.

I added the statement 'Go to Next Slide' so that the user doesn't have to wait for the playhead to reach the end of the question slide.


Action, triggered on entering the last slide, which shows the percentage.

Rather simple maths to calculate the percentage from v_teacher and v_maxTeach and store it in the variable v_percTeach.

Some Timesaving tips

Start by creating the user variables, and then add the Text Caption with v_subject to the MCQ Master slide.

Create the title slide, with its On Enter action (assigning a value to v_subject), and duplicate it then for the other subjects. That way you have only to change the value With for the On Enter action and edit the text captions.

Insert only one MCQ slide after the title slide. Edit its text captions, add the simple action On Enter, create the advanced action TeacherCalc to be triggered by the submit button. I unchecked also dragged the Next button under the Clear button but since there is no Review, it could also have been unchecked.

Now duplicate the MCQ-slide 9 times: this will avoid to re-edit the answers, to relocate the buttons, to re-assign the simple action On Enter and the advanced action for the Submit button. Do not forget to edit the With field for the Simple action On Enter that will populate v_multi.

For the question slides in the other objects, you will have to duplicate the advanced actions if you use new variables to store the score (v_teacher), maximum score (v_maxTeach) and percentage (v_percTeach). The variables v_subject, v_dummy are reusable.

Why choose Standard over Simple action?


Captivate 9 users! 

You no longer need to use the work flow in this blog post, because this version 9 provides a new check box for Simple actions: if you uncheck 'Continue Playing the Project' the playhead will not be released.

Several times I answered the question: why should I create a standard advanced action to do something that is also possible with a simple action? This is one of the questions I treated in my first webinar (10th of May 2012) about Advanced actions: difference between simple, standard and conditional advanced actions. You can watch the recorded webinar On Demand using the link in the article:


For the demonstrations in that webinar I used Captivate 5.5. Meanwhile I offered another webinar about conditional actions (5th of July) but I think the recording is not yet available. That one was using Captivate 6. However what I explain in this article is valid for versions 5, 5.5 and 6.0.


Difference Simple/Standard

What do I mean by a 'simple' action, because that is not an official term in Captivate? It is an action defined in the Actions accordion of the Properties panel, either for a slide or for an interactive object, the place where you find the possible events (On Enter/Exit for slides, Success/Failure for objects). Such an action is limited to one statement.

A Standard advanced action can be triggered by the same events but will be defined in the Advanced Actions Dialog box. And you can create such an action with only one statement, seems strange because it takes more time,... but there is a very good reason!

This is not a public secret, but a lot of users are not aware of the fact that even if you have exactly the same statement in both, the behavior is different! In the example of the screenshots both actions are triggered by a button (On Success):

  • When clicking a button that triggers a simple action, not only will the statement be executed but the playhead will be released. This means that it will continue and if you have nothing else to stop the playhead on the slide, it will advance at the end of the slide to the next slide.
  • When clicking  a button that triggers an advanced standard action, only the statement will be done but the playhead is NOT released!



I uploaded a video about this difference to my YouTube channel. It is not possible (too big) to embed the video here, this is only the poster. The link to the video is:

Simple versus Standard Advanced Action in Adobe Captivate