States and State Commands

Recently a user posted a question about using the ‘Go to Next State’ command used in Advanced actions. You can read our discussions in this thread.

Time to write out some tips for multistate objects. This blog wants to give an answer to the user, and has its focus only on that solution. I plan to publish more about the basics of states and their commands later on. To me personally the introduction of multistate objects is in the list of my favourite features in Captivate, closely following Shared/Advanced actions and Shape buttons.

Example movie

Watch this published rescalable interactive movie. The second slide has three shape buttons, navigating to three slides where you can read and confirm reading, or click hotspots, or answer questions. Each of your actions will result in changes to the progress bar on that second slide. Beware: whenever you have clicked an interactive object it will be disabled!


Terminology Multistate objects

InBuilt States and Custom States

You can add custom states to any object, static or interactive. In those states you can have many object types: graphics, video, audio… but no interactive objects nor hyperlinks. The Normal state is the default state, which will always appear unless you have changed to a custom state using a command (in a simple or an advanced/shared action). Nothing is locked to the default normal state for custom states . You can have objects in a custom state that are in a totally different position from the Normal state. Custom states are always controlled by commands, not by a situation. If you want a custom state to remain for future visits to the slide where the multistate object is sitting, you need to check the option ‘Retain state on slide revisit’.

Inbuilt States exist for these object types:

  • All types of buttons Shape buttons, Image buttons, Transparent buttons and Text buttons.  You have four of those styles: Normal, Rollover, Down and Visited. The first three are part of the button style.  You don’t have the same freedom for location of those states, they are locked to the Normal state (look for the Lock indicator).
  • Drag sources and Drop targets on a D&D slide. For more information see: InBuilt states for D&D

I will only talk about shape buttons here. Contrary to custom states Inbuilt states appear automatically in a situation: when not hovering over button (Normal), when hovering over button (Rollover), when pressing button (Down) and when after clicking/tapping (Visited, if it has been created). You can only control Normal and Visited by a command if necessary, not the Rollover/Down states.

State commands

These commands are available both in a simple action (dropdown list in Actions) and in the Advanced Actions dialog box, to be used in advanced or shared actions:

  • Change State of …. to
  • Go to Previous State  …..
  • Go to Next State ….

When you use these commands as a simple action, from the dropdown list inthe Actions tab, they can only be applied to multistate objects on the same slide as the event triggering the action (Slide event, interactive button events) The Hypelink even thas only the first command (Change State).

If you insert one of the commands in an advanced/shared action they seem to be able to apply also to multistate objects on other slides. That is indeed the case for the ‘Change State’ command, but is NOT functional for the commands Go to Next/Previous States. I have logged this as a bug, because you are able to choose multistate objects on other slides, however without any effect. That was the reason of the question in the forums, described in the Intro.

You could see in the Example movie that I have a workaround. How?

Solution with variable and While loop

YOu will need one user variable v_counter,  to track the number of clicks while being on other slides than slide 2 with the Progress indicator SS_Progress (a multistate object). This progress indicator starts with a Normal state which is a shape with Alpa and Stroke = 0.

That variable starts with a default value = 0. The clicks on the OK buttons in slide 3, on the hotspots in slide 4 and on the correct answers in slide 5 do increment the variable, besides other commands.

When returning to slide 2 (which has the progress indicator) using the shape button ‘Back to….’ (is on the used content master slide) an advanced action On Enter for that slide is launched, using the While loop:

Example: if the user has performed 3 actions on any slide, v_counter would be 3. The while loop will then be done 3 times, which means the 4th state of the progress indicator will appear. At the same time, the variable will be set back to 0 at the end of the loop. The learner can continue to visit another slide, and the variable is ready to track again.

This is just an example, many variations are possible. Maybe you want to allow visits and actions to consecutive slides before returning to the main slide, this can easily be achieved. Or have feedback appearing on the main slide after all slides have been visited, based on the obtained progress..


I didn’t explain all actions in this post. The slide with the hotspots is based on a recent article about Hotspots in a 2D image.

Maybe you are wondering if I used the Visited state or a custom state for the OK buttons (slide 3) or the hotspots? What the quickest workflow is to create the states for the Progress bar? Did I use shared actions or advanced actions, and why did I choose that way? Why did I disable the buttons? If you are interested, I can explain… on demand.

The post States and State Commands appeared first on eLearning.

What is Branch Aware?


Branch aware feature appeared with Captivate 6.  I created a blog post to explain it, but I regularly meet users who are still unaware of its existence, or its possibilities. So I decided to refurbish that old post, and create a new example movie with CP2019. You have seen a first version of that movie in my recent post about localisation with CSV import. That post discusses the workflow to create quiz slides in different languages in the same project. The example did use the Branch aware feature, but some of the features were not fully localised: the score slide was the default score slide which is in English since I am using a version in that tongue.

In this post I will also talk a lot about the quizzing system variables. If you didn’t download my explanatory table yet, please do so. You’ll find a link in this blog post: Creative with Quizzing variables.

What is Branch Aware?

Look at the Advanced Interaction panel of the example movie. It gives you a lot of information, not only about the events and the triggered actions, but also about all scored objects, including question slides.

You see that the total score is set at 60 points, result of the 9 graded questions in the file. For each of those graded slides both the individual score and the penalty are shown. There are also 3 Survey slides, without a score. Those values are also stored in quizzing system variables:

  • Total score in cpQuizInfoTotalQuizPoints
  • Score per question in cpQuizInfoPointsPerQuestionSlide (reusable variable)
  • Penalty per question in cpQuizInfoNegativePointsOnCurrentQuestionSlide (reusable variable)

If you don’t activate the option ‘Branch Aware in Quiz Preferencesn Settings (see screenshot later on), the default score slide will show 60 as maximum score. If the learner takes only one branch (language) of the quiz, the percentage (cpInfoPercentage) will be calculated as the obtained score (cpQuizInfoPointsscored) divided by that maximum score of 60. Same with the number of correct answers and total number of answers. This means the learner would be very confused, and never succeeds in that case. Reason is that those system variables are fixed when the course starts, I label them as being ‘static’.

When turning on Branch Aware, the system variables become ‘dynamic’, they will be changed on runtime based on the branch, thse slides visited by the learner. In this example movie that has been my choice: if the learner succeeds in one branch (maybe Dutch) the maximum possible score will be changed to 20, the percentage will be calculated with that maximum and the obtained score and the learner will see correct data on the score slide, can reach the passing score. No problem if a trilingual learner did visit the three branches, since the variables are dynamic, he will be judged on the maximum score of 60. This is the setup of Quiz Preferences, Setting for the example movie:

Example Movie


Setup Project

The project has 16 slides: Title slide, Dashboard slide, 3 groups each with 4 questions, the default score slide and a custom score slide. This is the Filmstrip, I expanded the group ‘Dutch questions’:

Dashboard slide (slide 2)

I will not explain the effects on the dashboard slide, where I used a loop action (While) triggered by the On Enter event.

I created a user variable v_all The four buttons on this slide trigger a shared action which has two parameters: which value has to be assigned to the variable (1=All, E=English, D=Dutch, F=French) and the slide to jump to. Here is the instance for the button ‘Nederlands’ (Dutch):

Start slide of question groups Dutch/French

On all quiz slides a shape is displayed with info about the obtained score and correct answers so far. That shape, labeled SS_Info is a multistate object. In the Normal state the English version is displayed, there are two more states:  Dutch and French. Switching to the appropriate state is done with the On Enter event of the start slide of the Dutch and the French group. It is a simple action:

Because the project is pure linear, and there is no opportunity to go back, this setup is sufficient.

Last slide of each group (Survey slide)

The event ‘After Survey’ is used to navigate to the appropriate score slide. For the learners who did take the three branches, the default score slide (ScoreDefault = slide 15) is used, for the others the custom score slide 16. The same advanced action ‘LastAct’ can be used for the last slide in each group. If that last slide was a normal quiz slide, not a Survey slide, the same action could be used but for both Success and Last Attempt events.

Custom Score slide (16)

On this slide I used several multistate objects: where I added two states (Dutch/French) to the Normal state which has the English text. The On Enter event of this slide is used to trigger this action which will take care of showing the correct language information, and of the appearance of the Tropy image if the learner has passed.

One warning: the maximum score on the custom score slide is not created by using a system variable, but typed in (can also be calculated, as I explained in an older post about intermediate score slides). The variable cpQuizInfoTotalQuizPoints will not have changed from the original 60 points which took into account all quiz slides. It is strange because cpInfoPercentage where that maximum score is used, is correctly displayed as is  cpQuizInfoPointsscored.


I know that more improvements are possible, but blog post is already pretty long. If you really want to show a custom progress indicator on the quiz slides, maybe you’ll find some inspiration in this old post. 

If you allow backwards navigation, even give the opportunity to choose another branch on the dashboard, there will be some more editing needed. This article was meant to explain what happens when using the Branch Aware feature. Hope it helps some people.

The post What is Branch Aware? appeared first on eLearning.

Comparing Knowledge Check and Quiz Slides


Knowledge Check Slides have been introduced as one of the new quizzing features with version 9. The Help documentation is ‘spartan’ as usual. You can read this as Features (quote from the Help):

  • Knowledge check slide imbibes similar features of question slide without any results, reporting structure and interaction ids. 
  • Knowledge check slides do not participate in reviews. 
  • Random questions are not applicable to this knowledge check slide. 
  • Master slide and controls usage is similar to question slide. 
  • Knowledge check slides can be used to impart the learning on specific topics. 

I explored those KC slides in preparation for a workshop about new Quizzing features, and want to give you some more tips. Since the KC slides are very similar to normal quiz slides, I’ll start with ‘Recognizing KC slides’. Then I’ll show the differences in default setup, and in some other aspects not mentioned in the Help,  the relationship with the quizzing system variables and – what did you expect? – a tweaking tip.

Recognizing KC slides

This is possible in different locations:
    • in the Filmstrip, KC slides get a special indicator at the bottom right, which the Quiz slides do not have; in this screenshot slides 1&3 are KC slides and have that indicator:
    • in the Quiz Properties panel you see more differences with normal quiz slides, most are due to the fact that KC slides are not scored by default:

The mention (KC) next to the type of question
The lack of the possibility to choose between Graded and Survey (because KC slides are not scored)
No partial scoring for MCQ slides with multiple correct answers
No points
No penalty

  • in the Advanced Interaction panel you don’t see a specific indicator. The score of the KC slides is set to 0,  they are not set to be reported but… contrary to what the Help tells, the KC slides have an individual Interaction ID. This is probably not used. Look at this screenshot:

There is no way to convert a KC slide into a question slide, nor a question slide into a KC slide!

Default setup KC slide

The default settings for a KC slide are bit different from those for a question slide:

  1. For a KC slide only the Incomplete feedback message is activated, not the Correct message as for Quiz slides
  2. For both KC and Question slide only the Submit button is checked off. The Back, Skip and Clear buttons can be activated, but they are not by default.
  3. Attempts are set to Infinite, with the Retry Message enabled. For question slides by default Attempts is set to 1. Because the attempts are set to infinite, you don’t have a Failure message enabled for KC slides. You can decrease the attempts and in that case you can provide up to 3 Failure message, same as for Question slides.

You read in the Help that KC slides will not be visited during Review, they are not in the Quiz scope, except of course if they are nested in between normal quiz slides. Contrary to Pretest slides, the KC slides will not prevent navigation by playbar or TOC.

It is not possible to use question pools (see Help), random questions but it is also not possible to use GIFTformat to import KC slides.

Some options in the Quiz Preferences do work for KC-slides: if you check the option to Hide Playbar in Quiz, this will be valid both for question slides and KC slides. Unchecking the option ‘Allow Backwards Movement’ will only prevent backwards movement on question slides, not on KC slides. However, KC slides do not get a Progress indicator! IIf you want a progress indicator (question X of Y) you can have a look at this older blog post..

When you leave a KC slide, it is reset immediately which is not the case for question slides which are frozen until a new attempt on Quiz level is started. In that way a KC slide behaves like a Drag&Drop slide that is not set to be reported, had no score. There is no possibility to freeze the answer on a KC slide, which may be a game stopper sometimes.

As the Help mentioned, design of the KC slides depends on the same master slides as the normal question slides, with the exception of the new Review buttons which will never appear on KC slides. For navigation on KC slides you can use the Back/Skip buttons or add custom shape buttons.

System variables

Contrary to the Pretest slides, there are no specific system variables available for Knowledge Check slides. I have been looking for quizzing system variables that do get a value from a KC slide. Here is an overview of the variables that are not used by KC slides:

  • cpInQuizScope and cpInReviewMode, both Booleans will not be toggled from the default ‘false’ to ‘true’ when you enter a KC slide. If the KC slide is in between normal question slides, it can be ‘true’ but that is not due to the KC slides.
  • Variables linked with scoring are not used: cpInfoPercentage, cpQuizInfoLastSlidePointScored, cpQuizInfoNegativePointsOnCurrentQuestionSlide, cpQuizInfoPassFail, cpQuizInfoPointsPerQuestionSlide, cpQuizInfoPointsscored, cpQuizInfoPartialScoringOn, cpQuizInfoTotalProjectPoints, cpQuizInfoTotalQuizPoints 
  • cpQuizInfoAttempts: gives the attempts on Quiz level, as specified in ‘Quiz Preferences, Pass or Fail’. Those attempts have no sense for KC slides, since the user can come back as many times as he wants to retake the KC question which is always reset when leaving the slide.
  • cpQuizInfoPassPercent and cpQuizInfoPassPoints: since KC slides have no score, those settings of the Quiz Preferences have no meaning for KC slides.
  • cpQuizInfoTotalQuestionsPerProject: contrary to the Pretest questions which are counted in this variable, as are the normal Question slides, the KC slides are not included in this variable. Same for the variables cpQuizInfoTotalCorrectAnswers, and cpQuizInfoTotalUnansweredQuestions

As you see not many variables are used by KC slides, but some are used! Moreover they can be very useful if you want to do more with KC slides:

  • cpQuizInfoAnswerChoice: one of my favorites as you could read in this old blog postIt can be used to tweak the work flow with KC slides as you’ll read more later on. One exception: it is not populated when you use Advanced Answer option.
  • cpQuizInfoMaxAttemptsOnCurrentQuestion: can be useful as well, although having a similar system variable to cpQuizInfoAttempts for current attempt on question level would be even better. You need a user variable as a counter for attempts on question level. If you keep the default setting of Infinite attempts, this variable will have the value 32767 (no idea why?).
  • cpQuizInfoQuestionSlideTiming and cpQuizInfoQuestionSlideType are available for KC slides as well.

For an overview of all quizzing system variables, including a free table to download, check: Creative with Quizzing System Variables

Tweaking tips

Here are some tips, which I tried out with success but will not explain in detail.

  1. If you do not want to keep the Attempts set at Infinite, but to a limited number it would be possible to count the number of correctly answered KC slides. Create a user variable v_counter with a default value of 0. Use the Success action of the KC slides to increment that counter. Later on you can show the obtained value for v_counter, and even use that value in a conditional action to offer feedback or navigate the user back to content slides.
  2. There is no Review possibility for KC slides as mentioned. If you offer limited attempts on question level, you could show a custom feedback message on the KC slide for the questions answered correctly, something like ‘You have answered this question correctly’. When simulating a ‘Review‘ situation, the user will be invited to answer only the KC questions that do not show that message. Be careful: all embedded question slide objects are always on top of the stack, you don’t want the feedback to be hidden by those objects. That can be done by having a shape before the KC slide, timed for the rest of the project and always on top. This tweaking work flow was described in this article: Buttons on Question/Score slides?
  3. The use case described in this thread of the Captivate forums could be solved using the same system variable cpQuizInfoAnswerChoice in conditional actions, combined with a counter to track the number of attemptsl. You cannot leave a normal question slide to a content slide for remediation unless you follow the strict rules for remediation. If you want to limit the attempts to get a correct answer, remediation rules are broken. With a KC slide, the answers are reset every time, which allows a lot more freedom. However: if you need a real score for the slide, you’ll have to use the workaround I described in this blog post: Report Custom Questions – part 2
  4. All features of the KC slides are also available in a responsive project developed with Fluid Boxes. Check this blog post about the setup of quizzing master slides in Fluid Boxes

The post Comparing Knowledge Check and Quiz Slides appeared first on eLearning.

Forced Clicking Hotspots in Fluid Boxes Project


A couple of weeks ago I proposed two workflows for a common use case: learner has to click a number of hotspots which show explanations before being able to continue in the course. That example was for a non-responsive (maybe rescalable) project. If you missed it: Comparison Workflows for Hotspots

At the end I promised a follow-up article discussing how this can be realized in a responsive project, developed with Fluid Boxes. I will use exactly the same example, same variables (use both my custom theme and a shared action to get them quickly into the Fluid Boxes project –  see Shared Actions Tips).

Preparation – Changes

The shape buttons (arrows) used as hotspots had 4 InBuilt states in the original article. I want to use as much normal fluid boxes as possible. For that reason I have to simplify the Visited state where originally I added a checkmark image. This is not possible in a normal fluid box. The new object states look now like::

Object States Hotspot Fluid Boxes

Show/Hide Workflow – Changes

In the original file the text shapes containing the explanation when a hotspot is clicked, were grouped and stacked in the same location. Grouping allowed to simplify the actions. Each action had the Hide Group command, before showing the appropriate text shape. Two parts of the workflow are impossible in a normal Fluid Box:

  1. Grouping cannot be used. The consequence is that you’ll need to have a command line for each text shape to be hidden. In this example, where only 3 hotspots are used, that is not too bad but it is getting worse when the number of hotspots increases. The advanced actions FlashAct, ThemeAct and ActionAct have to be changed as well as the action On Enter.
    FlashAct (F<img src=” />Enter action for Show/Hide
  2. It is impossible to have objects stacked in the same location. For that reason I marked the Fluid box which will have the text shapes as being static. That is not a very nice workaround. Although I marked the Height and Width of the shapes to be 100% and 90% of the size of the Fluid Box, that setting is not honored, the shape will shrink a lot more for smaller screens, because the width/height ratio of the FB is kept.

Multistate Workflow – No Changes!

Great news! No changes are needed for the Multistate workflow, it works perfectly in a Fluid Boxes project. I didin’t even have to change the fluid box with the multistate object in a static fluid box. You have of course to be careful not to add objects to the states of the object, because no stackng is allowed.

Conclusion is clear to me: avoid the good old Show/Hide workflow when you are working with Fluid Boxes. You have a much nicer result using a multistate object.

I will insert a link to the responsive project for those who want to help testing it on mobile devices. Let me know if you are interested?

The post Forced Clicking Hotspots in Fluid Boxes Project appeared first on eLearning.

Force Clicking Hotspots: Comparison 2 Workflows


 This post is created in CP2017  but most can be done in CP9 as well.
A learner has to click several hotspots. Those hotspots reveal extra information such as explanation, images, video…. Moreover the clicks on the hotspots are tracked, because something has to happen when all of them have been clicked at least once. The clicking is not in a forced sequence. That ‘something’ could be the appearance of a Next button, a congratulation message etc… I have answered with a solution to such a situation multiple times. Although I have such use cases on my personal blog, thought it was time to summarize how this can be done in the present version.
There is third workflow, using Drag&Drop, not included in this post.
Focus will be on non-responsive projects. Both workflows can be transferred to a responsive project developed with Breakpoint views. Situation is different for Fluid Boxes workflow, will be explained in a future article.

Example movie

Watch this short (rescalable) interactive movie. In between the Title and End slides, you’ll have two slides that look identical, but the first was developed using the (older) workflow Show/Hide, while the second uses a Multistate Object.


Common preparation

Sequence to click the hotspots is not imposed. For that reason tracking the clicks cannot be done using a counter variable.  I created one user variable (Boolean type) for each of the hotspots. A Boolean variable is a variable that has only two possible values: True/False, Yes/No or…. what I mostly use 0/1. The user variables have a default value of 0. Once a hotspot is clicked the value will be changed to 1. In the above example  3 variables were needed:  v_Flash, v_Theme, v_Action. I will reuse them for both slides, the one with the Show/Hide workflow and the one with the Multistate object.  You’ll see how this can be done by a Reset action On Enter for the slides, also useful if you want to give the opportunity to revisit the slide.
The hotspots are shape buttons (arrows). I didn’t use the old Show/Hide workflow to indicate that a shape button has been clicked, but used the Visited State, InBuilt state which can be created for all buttons, including Shape buttons. Here is a screenshot of the Object states for the first hotspot SB_Flash:
Object states Hotspot

Show/Hide Workflow

Timeline of this slide is visible in this screenshot, watch the grouping of the (3) Text shapes:

The action triggered when clicking a hotspot (in this case FlashAct for the shape button SB_Flash) has two decisions. Watch the Preview:

The first decision (standard) hides the group with the text shapes, shows the text shape needed for this hotspot (here SS_Flash) and toggles the value of the associated tracking variable (v_Flash). When duplicating the action (see Advanced Actions Outfit) only the Shape text and the Variable have to be changed for the other hotspots.

The second decision (conditional) checks the value of all tracking variables, and if all hotspots are clicked shows the Next button. This decision is the same for all hotspots.

To allow multiple visits to the slide, you need to create an On Enter action that will restore the original situation. That action (standard) is easy to understand:

Multistate object workflow

The timeline of this slide has less lines:

All texts are now in a state of the multistate object SS_Multi. The Normal state of that shape has no fill (Alpha=0) and no stroke. It looks invisible to the learner.
The action triggered by the hotspot (ThemeActBis) looks very similar to the one in the first workflow:
In the duplicate actions, only the state and the tracking variable have to be edited.
On this slide another On Enter action is needed to reset the slide. Because the Normal state is automatically reset when revisiting the slide (Retain state remained unchecked), no need to reset the Multistate object. The action is shown in this screenshot:


Show/Hide workflow

The text containers can have hyperlinks, which is not possible in states of a multistate object. When grouping the texts, even for more than 3 hotspots, the advanced actions are not that complicated.

However, as shown in the last slide of the example movie, the situation become much more complicated when you want to show more than just text, when you want to show multiple itemsi The grouping will then have to be done for each hotspot.  This will complicate both actions. I’ll show the example of 5 hotspots, each having to show a group of items:

  1. Action to be triggered by a hotspot : instead of having two commands ‘Hide Gr_Text’ and ‘Show TextX’ you’ll need 6 commands:
    Hide Gr_2
    Hide Gr_3
    Hide Gr_4
    Hide Gr_5
    Show Gr_1
  2. For the action resetting the situation the ‘Hide Gr_Text’ will have to be replaced by 5 Hide commands.

Multistate Object workflow

Disadvantage is that you cannot have a hyperlink (nor an inserted variable) in a state.

As for the actions to be used both for Hotspot trigger and for resetting the slide On Enter: the present actions can be used, you only have to add the multiple items to the proper state.

The post Force Clicking Hotspots: Comparison 2 Workflows appeared first on eLearning.

About Slides and Frames – Intro to Micro-navigation

Intro micro-navigation

Recently I presented two sessions about the Timeline at the Adobe eLearning Conference in DC (25th of April 2018). Maybe you did read a previous post, where I offered some easy Timeline Tweaks, taken from the first presentation ‘Demystifying Captivate’s Timeline’ which was aimed at clarifying basic features of the timeline, including the different ways of pausing the timeline. The second presentation ‘Mastering Captivate’s Timeline’ plunged deeper into exploring advanced workflows, including use of variables, advanced/shared actions and…. micro-navigation. I created that term in this (old) article. The word has been adopted by many Captivate users. Time to upgrade this article to integrate the changes within newer versions (system variable names) and the switch from SWF to HTML output. If you have a look at that article, please use a Flash Player enabled browser to watch the embedded interactive movie (SWF).  The present post can be considered as an introduction to ‘micro-navigation’.

Slides versus Frames


You, Captivate user,  are aware of slides and master slides. Slides appear in the Filmstrip and each slide is based on a master slide Master slides have a dedicated panel, which looks very similar to the Filmstrip. In the Newbie UI when activating the Master Slide panel it will replace the Filmstrip in the left docking station. The Timeline panel can be used both for slides and master slides. Timing (horizontal scale) itself has no real meaning for master slides,  panel is used to change the stack order (or z-order) of objects. If you insert a shape button having a pausing point on a master slide,  pause will be visible at the end of the timeline.
For sure you have used navigation commands for slides. In the dropdown list of the Actions tab for any event (slide event, interactive object event) or hyperlink navigation commands are available. They allow you to override the default navigation. ‘Default navigation’ means when the playhead reaches the end of a slide it will automatically move to the next slide.
The slide navigation commands are:
  • Go to the next slide
  • Go to the previous slide
  • Jump to slide …
  • Go to last slide visited
Maybe you are not aware of the availability of dedicated Shape buttons in the Shape thumbnail dialog box, that have an advanced action to go to the Last slide or the First slide of a project?
Also less known are the system variables from the category ‘Movie Control’  related to slide navigation. They be used in actions:
  • cpCmndGotoSlide  can be used to replace the simple command ‘Jump to Slide’; beware: index starts with 0, whereas the index of cpInfoCurrentSlide starts with 1 (exceptional to make it possible to use in a progress indicator). If you want to restart a slide without re-entering the slide, you can use “Expression cpCmndGotoSlide = cpInfoCurrentSlide – 1”
  • cpCmndNextSlide  is a Boolean variable with a default value of 0. With ‘Assign cpCmndNextSlide with 1″ has the same result as Go to the next slide
  • cpCmndPrevious is a Boolean variable with a default value of 0. With ‘Assign cpCmndPrevious with 1″ has the same result as Go to the previous slide


A published cptx-file (to HTML or SWF) is an interactive movie. Each movie ‘(and animation’ plays at a certain speed, the ‘professional’ name for that speed is ‘Frames per Second’ rate, or FPS. The quality of a movie depends on the resolution but also on that FPS number. The default FPS for a published cptx-file is 30FPS. You can see this rate in the Project Info panel.

It is possible to change FPS rate in Preferences, Project Publish settings.

With the default rate (30), each second on the timeline has 30 frames, the smallest unit on the timeline  (0,1sec) 3 frames.  I use the word micro-navigation for navigation between frames. Contrary to the navigation to slides, there are no commands available for micro-navigation. It is only possible using advanced or shared actions which allow you to manipulate the system variables available for frames. The relevant frame system variables are:
From the category ‘Movie Information’
  • cpInfoCurrentFrame: your best friend when exploring Captivate’s timeline, debugging projects with advanced actions, micro-navigation etc. You’ll find that variable inserted in a text container quite often in my tutorials. You can watch an example in this interactive movie
  • cpInfoFPS: returns the FPS rate, by default set to 30 as explained above. This variable can be used in calculations (with Expression) to convert from seconds to frames.
  • cpInfoFrameCount: similar to cpInfoSlideCount (total number of slides in project) it returns the total number of frames in the project. It can be used in combination with the previous variales to calculate to the total duration of the project (as shown in the TOC).
    From the category ‘Movie Control’
  • cpCmndGotoFrame can be used to jump to a frame using its frame number (similar to cpCmndGotoSlide); playhead will not be released, project remains paused.
  • cpCmndGotoFrameAndResume can be used to jump to a frame using its frame number and to release the playhead at the same time, project will continue.


It is just a proposal: test out what you learned by creating a one-slide project, similar to the one visible at the start of this post and as thumbnail.  Design is up to you, but this is required for the ‘exercise’:

  1. Replace ‘No action’ for the On Enter event of the slide by ‘Pause‘; the slide shouldn’t start playing automatically.
  2. Insert the system variable cpInfoCurrentFrame in a text container (example has it bottom right); that will allow you to track the location of the playhead. When starting the slide it will pause immediately, it will show 1 (although the system variable starts with 0, there is a small delay).
  3. You need two buttons: one for navigation forward, and one for navigation backwards. I used two shape buttons from the category Buttons, but replaced the action (see below). In the example they are at bottom center.
  4. A number of objects staggered on the timeline. In the example I have 7 shapes aligned in a row. They appear 1 second later than the previous one. All objects are timed for the Rest of the Slide. Result will be that the slide itself will have a duration that is longer (8secs in my case). To move an object on the timeline one second to the right: select the timeline of that object and use shortcut key CTRL-right (see Colors and Keys for Timeline). Here is a screenshot of the Timeline in my example:
    You see a small gap (0,1 sec) before the first object. Reason is the delay I mentioned before: playhead is stopped at frame 1, I don’ want that shape to appear immediately. Because this is a one slide project, I didn’t need to pause the slide at all, not even at the end. Both buttons have no pausing point as you can see in the Timeline.

Three events are used on this slide for actions:

  1. I already mentioned the On Enter event of the slide, which is set to ‘Pause’.
  2. The button SB_Next triggers a one-line advanced action that should look like this:
  3. The button SB_Back triggers a one-line advanced action that should look like this:

Test! You’ll be ready for more advanced workflows with micronavigation. Watch out for a shared action that can be used in different situations: forcing full view of a slide on first visit, but not on later visits is one of the use cases.

The post About Slides and Frames – Intro to Micro-navigation appeared first on eLearning.

Intro to Shared Actions

Interactive presentation (webinar)

Last week I presented a webinar ‘Dare to Share: Power of Shared Actions’ for a pretty big crowd.  As usual I presented using a Captivate presentation, since I don’t feel it to be appropriate to use Powerpoint when Captivate has so much more features. One of the advantages is that I am able to convert that presentation in an interactive movie. If you did miss the webinar and did not register to have access to the recorded versions, you can watch this movie using this link:

Shared Actions

It is Rescalable HTML5 output, you can also watch it on mobile devices, but only in landscape mode.

Content of Presentation

Five topics in this presentation:

  1. Importing and using a Shared action
  2. Creating a Shared action (two workflows)
  3. Parameter types
  4. Using a Shared action as a Template
  5. How to choose between Shared and Advanced action

The presentation itself is using a lot of shared actions as you’ll be able to see because I included these screenshots under the ‘Information’ button:

  • To create a dashboard
  • To deactivate an interactive object after all has been viewed
  • To create toggle buttons
  • To skip audio when a slide is revisited
  • In a Drag&Drop slide to show Feedback for each drag action.
  • ….

A lot more is possible with Shared actions to replace Advanced actions and make it easier to transfer the scripts to new projects for reusing. A typical example are custom question slides of all types (not only MCQ). To attribute all fhe functionality of the default question slides to those custom question slides, it takes a lot of work creating the actions. By reflecting on the setup you can create shared actions that can be easily reused not only in the present project but in all your future projects.


Some of the mentioned examples will be published in a later blog post. If you want to learn more about Shared actions, which are a lot more flexible that the older advanced actions, send me a note. I am preparing several booklets. One will be  about  Shared Actions. Those booklets can be used as cookbooks, with recipes but also offer in-depth information about the topci.

The post Intro to Shared Actions appeared first on eLearning.

[Webinar] Dare to Share: Power of Shared Actions

If you have seen some of my use cases or tutorials, you are aware of the fact that I am a big fan of Shared and Advanced actions. Advanced actions are part of Captivate since version 4 and made it possible to extend Captivate’s functionality in many ways.  Their release was the reason I started blogging to show how easy it is to  create engaging courses without the need of learning a programming language. You just use the point-and-click interface of those actions, which are converted to a programming language on runtime.

With Captivate 7 Shared actions were included, a more flexible alternative for Advanced actions. The main goal of those shared actions is reusability!  That reusability is due to the presence of parameters, which can be filled in on assigning a new instance of the shared action to an event. Shared actions will be listed up in the Library, the same way as other assets. As I explained in the blog post Library? Which Library you can open the library of any project in a new project, and drag the assets in the library of that new project. That is also the case for shared actions. Captivate 8 extended the functionality of shared actions by adding the possibility to define variables and literals as parameters.

Shared actions can also be used as templates for new advanced (or shared) actions, a feature that is not very well known but very useful as well.

If you want to see shared actions ‘in action’, you can register for this webinar, organized by the eLearning Brothers on Thursday, 15th of March,  4pm CET (8am PT). You are welcome to get lot of tips from a user addicted to shared actions. Registering is possible using this link:

Dare to Share

Be sure: you’ll walk away with many creative ideas!  As a plus: you’ll be working in the brand new Advanced Actions dialog box of Captivate 2017.