Play/Pause Button extended (Classic Captivate)

Intro

This blog post is due to a forum question. For a custom Play/Pause button the developer tried the workflow from this post. However there was a second request: the learner was expected to click an interactive object to proceed to the next slide. The original conditional action for the Play/Pause button results in a conflict: if the learner clicks that button multiple times, the Play action can override the pausing point of the interactive object meant to pause the slide indefinitely until the learner clicks it to proceed to the next slide. If you want to learn more details, please check out this thread.

My promise: a workflow, taking into account that it should be possible to use it on multiple slides. You can test it out in the Example project. Maybe some of you could be in the same situation, hence this blog post. It is based on deep understanding of Captivate's Timeline, micro-navigation, power of shared actions and objects timed for the rest of the project. 

If you are wondering: this workflow is impossible in the new version 12 for multiple reasons.

Example project

Please test this project, either by watching it using this link for a scalable version, or the static resolution version embedded below. After the introductury slides you'll find two slides with the Play/Pause button. Test them by clicking that button multiple times and watch what happens when you reach the end of the slide: the button will change its state but the play head will remain paused until you click the

 Next button.   I used some design elements/slides from the non-

responsive Quick Start Project 'League'.


Background

The basic conditional action for the custom Play/Pause button, which is timed for the rest of the project to start with is:

I used the simple commands Pause and Continue, which have exactly the same result as assigning values to cpCmndPause/cpCmndResume. Toggling those variables alhough they are Booleans, is not possible (sorry). I preferred the 'Go to Next State' for the PlayPause button. This is the object state panel of the button, this command is toggling between the two states.

Due to the timing of the button for the rest of the project, it has always the same ID and the advanced conditional action has nothing which changes when being on another slide. Problem is that when the button is clicked to the Play state on the pausing point of the Next button, the Continue command will override the pausing by this button. To solve this we need to know 'where' that pausing point is, and add a new decision to the conditional action, where Pause occurs in that situation even when the learner clicks to play again.

If you have an instance of the Next button on each slide, to time it near the end of the slide, its pausing point will be at a different frame on each slide. In the example project, to simplify, I timed the Next button for the rest of the project and took out its Pausing behavior. But I added a click box on each slide, pausing at the end of the slide. The click box is invisible (no feedback messages) to the learner. 

I need to define on which frame the slide has to pause indefinitely. In order to keep the Play/Pause button action independently from that frame, I have to store it in a user variable. The value of that user variable will be defined using the On Enter slide event. 

Step-by-step workflow

Variables

System variables

The used system variables are:

  • cpCmndPause: has value 1 when slide is paused, value 0 when it is not paused.
  • cpInfoCurrentFrame: frame number of the present frame, index starts with 0; frame number is over the project not the slide.
  • cpInfoFPS: number of frames per second; default value is 30 but can be changed.

User variables

Two user variables will be used but since they both appear in a Shared action, they'll be defined when you send this shared action to a new project:

  • v_start: will store the frame number of the first frame of the slide
  • v_end: will store the frame number of the frame where you want to pause indefinitely; it will be near the end of the slide, but it doesn't need to be the last frame.

Events and actions

You'll see an overview of the actions on the two slides where the Play/Pause button is important in the Advanced Interaction panel::

PlayPauseAct (advanced action)

This action is triggered by the Success event of the Play/Pause button:
The second decision is simple: The play head will always be paused when the frame number is higher than the on in v_end. Due to the sequence of the decisions, the state change for the button will occur, but Continue will be overridden if the second condition is fulfilled.

EnterAct (shared action)

This Shared action is triggered by the On Enter event of each slide, has 3 parameters:
The first parameter is the one who will be different on each slide. In the screenshot it is set at 18 seconds. It means that once the playhead reaches the frame at 18 seconds it will be paused by the second decision in the PlayPauseAct. Since frame numbers are on project level, the first frame of the slide is used as reference. The Expression commands are needed to perform some math operation to calculate the exact frame number. This literal depends on the Timeline. Have a look at the Timeline of slide 4
For this slide the first parameter was set at 45 seconds:
For slide 5 this was the Timeline:
In this case the first parameter was set at 9 seconds.

On the last slide (6) I used the On Enter event to hide the Play/Pause and the Next button since they were no longer needed. 




Classic Captivate vs 'Charm' test case (responsive project).

Intro

The 'All New Captivate', version 12 has been released just over a month ago.

It lives along Captivate Classic because it has not all the features which are expected in a full-blown authoring tool. Main limitation is that you can only create responsive projects. As a long-time user of Captivate I know that this implicates a lot of prohibited workflows which are possible in a non-responsive project.

To test the differences in workflow and possible bugs/lacking features I want to recreate a responsive project in the new version. The project which you'll be able to see here, was created with Fluid Boxes and based on a Quick Start Project 'Rhapsody' for the design aspect. 

'Crunch Numbers' test project

Play with the project on any device, using this link. You can also view the embedded one below, but on mobile devices you better use the link.



The topic is simple, and suited for playing on small mobile devices. There are some references to previous blog posts, but they used a non-responsive project. I focused on multistate objects because I know already that they are easier to use in the new Captivate release than in Classic Captivate.

Test follow-up

I plan to document each of the steps of the test process in another blog with limited access. Although my primary focus will be on recreation of the interactivities in the project, I will also spend time on the design features. Here is a non-restrictive first list of steps:

  • Preparation: setup of Preferences and Theme.
  • Recreating simple content slides using the slide templates and blocks
  • Eventually use of slides from Quick Start Projects.
  • Setup Multistate objects
  • Use of audio.
  • Animations tool
  • Defining user variables
  • Replacing Shared actions by Interaction tool (and Copy/Paste)
  • Replacing Advanced actions by Interaction tool (and Copy/Paste)
  • Scoring 

Steps in Bold are for me the primary goal.

After the process I will post a link to the result in this blog.

Invitations

As mentioned the new blog will not be public. If you are interested in following my test steps and conclusions, you'll need to contact me either:

  • by sending me a mail with your credentials to info@lilybiri.com
  • by adding a comment here, but I need your name and mail address
  • by filling in the form under the Contact button on my website.

You may get an invitation. It will be a limited group and I expect some engagement/reactions on the private blog.




Custom Navigation (basics)

Warning

At this moment two versions of Captivate are functional with the same license: Captivate Classic (version 11.8) and Captivate (version 12, also named Charm). The workflows described in this post are only functional in Captivate Classic. In version 12 they are not (yet) possible for multiple reasons which I will summarize at the end.

Why use Custom Navigation? 

Captivate has a playbar which includes Next and Back buttons, and a progress bar allowing to scrub to any location.

However in many projects these default buttons are not wanted, some examples:

  • The project is not linear (presentation-like). This can be due to a dashboard pointing to different parts and allowing the learner to control the sequence of the project slides.
  • There are (dummy) slides in the project which you don't want to have visited by the learner. 
  • Your client requires Forced viewing (bad idea especially for adult learners).

In those cases you don't want to have the default buttons which will be available all the time and always cause the action 'Go to Next  Slide' or 'Go to Previous Slide'. In all those cases a scrub bar is also a bad idea, but this article has its focus on custom Next and Back buttons. I have seen so many cases where the developer just puts an instance of the custom buttons on each slide - each with their individual action -  but I will propose altnernatives.

Workflows

Purpose of both workflows is the same: avoiding to have an instance of the buttons on each slide:

  1. Workflow 1: Put the buttons on the first slide where you need them, and time them for the rest of the project, always on top. For the Next button this will be on the first slide, for the Back button on the second slide. The buttons will have a unique ID. That means that they can be addressed with an action like Show/Hide when necessary. You can hide the Next button if it is no longer needed on the last slide using the On Enter event of the slide. This workflow is to be preferred if you need a lot of Forced viewing. In that case you can hide the Next button (On Enter) and use the Delay Next Actions command to show them after a certain delay. 
  2. Workflow 2: Put the buttons on master slides. They will not get an ID, but if you keep the Pausing (is activated by default) the pausing point will occur for each slide based on the master slide at the last frame, whatever the slide duration. These buttons cannot be controlled by actions like Show/Hide.

Since the buttons in both workflows will not always be used with 'Go to Next  Slide' or 'Go to Previous Slide', you'll need a 'dynamic' action to make them flexible. 

Dynamic actions

I prefer Shared actions because it is easier to transfer them to any project, using my Shared actions Library. That is a Captivate project where I store much used Shared actions. I open the library in any new project using File, Import, External Library.

Next button

The simple action ‘Go to Next Slide’ can also be achieved by this action:

Assign cpCmndGotoSlide with cpInfoCurrentSlide

This may seem weird, but the reason is the different start number of the index: for cpCmndGotoSlide it is 0, for cpInfoCurrentSlide it is 1. Example: if you are on slide 3, Next button should go to slide 4, but for cpCmndGotoSlide slide 4 is identified by number 3.

Howeveer you cannot use this action to the Next button, whether it is on the first slide (timed Rest of Project) or on the master slide(s). It is static, you cannot edit it to go to another slide than the Next one. To solve this issue I replaced the system variable by a user variable, which I label v_Next.

   Assign cpCmndGotoSlide with v_Next

Another event and action is needed on each slide to define the value of v_Next. The used event is the Slide On Enter, and it is better to use an Advanced action, because it can be applied to all On Enter events of the slides in one workflow. For its default action it will be:

   Assign v_Next with cpInfoCurrentSlide

For slides where the Next button needs to jump to a different slide, you’ll need to edit this action, replace ‘cpInfoCurrentSlide’ by the slide number you want to navigate to.. 

Back button

The simple action 'Go to Previous Slide' can be replaced by this Expression:

Expression cpCmndGotoSlide = cpInfoCurrentSlide - 2

Why 2? For the same reason as explained for the Next button, due to the difference in index for both system variables. To make this action dynamic, we'll need another user variable which I'll label v_Back. Similar to the workflow for the Next button, the value of this variable will be set with an action On Enter for each slide. For a normal Back button this would be:

   Expression v_Back  = cpInfoCurrentSlide - 1

The action for the dynamic Back button will be:

   Expression cpCmndGotoSlide = v_Back  - 1

On the slides where you want to navigate to a slide which is not the previous slide, edit the On Enter action, replacing cpInfoCurrentSlide by the wanted slide to navigate to.

I prefer also shared actions for both the Back button action and the On Enter action.

Summary

In my Shared actions Library I have three Shared actions for the Next/Back buttons:

NextAct   Assign cpCmndGotoSlide with v_Next

BackAct   Expression cpCmndGotoSlide = v_Back  - 1

EnterAct   Assign v_Next with cpInfoCurrentSlide

                 Expression v_Back  = cpInfoCurrentSlide - 1

  • In a new project, drag the shared actions to the Project Library of the new project. It is important to drag them simultaneously to avoid the variables v_Next and v_Back to be created twice.
  • Add Next/Back buttons with one of the two workflows. Apply the Shared action ‘NextAct’ directly to  the Next button and 'BackAct' to the Back button. No parameters are needed.
  • Convert the action ‘EnterAct’ to an Advanced action, by using it as template. There are no parameters to be defined. Apply the Advanced action to all Slide Enter events, which is possible by selecting all slides in the Filmstrip (Ctrl-A) and adding to the slide Enter event.
  • Identify those slides where the buttons needs to navigate to other slides and edit the Advanced action 'EnterAct' for those slides. 

What about Captivate (version 12)

This workflow is impossible due to lack of:

  • Master slides
  • Timing of objects for rest of project
  • Missing system variables from the Movie Control category
  • Missing slide Enter event

In that version you need to keep the workflow to insert or copy/paste a button on each slide and add the appropriate action using the Interaction tool.


Software simulations: Preparation phase (back to basics)

Intro

Captivate has always been famous for its interactive software simulations. Originally when it was released under the name ‘RoboDemo’ it was its primary goal. Although – in recent versions  – not much has been changed  for this feature,  it could be worthwhile to explain some tips I acquired while recording interactive tutorials for many applications (in several languages). In Flanders we often quote ‘Goed begonnen is half gewonnen’, freely translated ‘a good preparation will spare you lot of work later on’. This blog is about this preparation phase. some recommendations are also valid for Video Demo. I plan another blog will focus on the capturing workflow, and a third one on editing/polishing the sims into engaging eLearning course(s).

Preferences

Preferences can be edited before opening a project, while you are in the Welcome screen, the so-called Global Preferences. You do not have to start the Software simulation type of project to do so. Preferences are too be found under the Edit menu (Win users like me) or under the Captivate menu (Mac users).  Those global Preferences have less options because project-specific ones are missing, but the Recording category is complete.These options need to be checked, and eventually changed:

Settings:

Check the language! If you need to use another language, this is the place to be before starting the simulation. The feedback messages during capture (both shapes and captions) can be found in a file with extension rdl, like you can see in this screenshot. You can edit the messages in an editor like Notepad (don’t use Word).

I tend to keep the other settings at their default value. Lot of them can be set up later on for the project (narration, system audio..). The Camera sound and the Keystrokes audio are useful during recording, will not be included when published. The Smoothening is meant for the movie slides which have to be created for drag and other mouse actions. Later on you’ll get tips in the second part which will treat the capture itself.

Video Demo

To have a better quality for the movie slides (setting is also used for the simulation movie slides, also indicated as Full Motion Recording slides), change to 32-bit instead of 16-bit. For Video demo the temporary files are in a dedicated folder, you may want to switch to another folder on another drive if your startup drive (C) is too small. That tip is only for Video Demo, which can become rather big in file size.

Keys

Some of those shortcut keys are only for software simulations, not for Video Demo. That is the case for the Pause button, you cannot pause a Video Demo (answered that question multiple times in social media). You have to end the recording and eventually record another video at the end of the previous one..

Modes

Allows to check the setup for the three default modes (Demonstration, Training, Assessment) and eventually set up a Custom mode. Beware: you cannot choose a ‘default’ mode for future recording, which is what some users seem to believe. Choosing the mode(s) always happens at the start of a new recording. Personally I will edit some settings in this category. The feedback messages in a software sim, contrary to all other feedback messages (shapes) are by default set to be Text Captions. I prefer to switch to shapes and you can have a choice for the shape; it is easier to control the style of shapes in Captivate (see Step 2: Themes). You need to make the choice for the Demonstration mode, but it will be taken over for the Hint messages in Training/Assessment:

Take note of the objects to  be added during recording: besides the Success/Failure/Hint messages, highlight boxes, click boxes, Text Entry Boxes and eventually Rollover Captions (for Tooltips).

Defaults

This category is meant to edit the styles to be used. It is bit weird that this is included in the Preferences. Do not worry, Recording defaults will be added to the used Theme as well.
Beware: that will be the Theme set as Default theme. Of course if you opted for shapes instead of captions under 4., you only have to check the styles for shapes, not for captions. It is a bit confusing, because some captions have no counterpart as shapes: Capture Caption, Rollover caption. The styles for Smart Shape (used for both) is by default empty, but you can choose a styles there as well.
I will always create a different style for the Highlight box, instead of the thin lined Blue one which is the default. For the TEB, which often doesn’t have the wanted style that is a lot more difficult, because the wanted font and font size depends a lot on the application you’ll want to capture.

Theme

All software simulations (and the Video Demo) use the Blank master slide. It is important to keep that master slide blank. A background color or background image is not a problem. But you shouldn’t add other objects.

The Theme of your choice will need the wanted theme colors palette, theme fonts and object styles (maybe set in the Preferences, Defaults), Content and Quiz master slides are important if you want to add them later on to the course.  Once the wanted theme has been double-checked mark it as the Default theme. Especially if you do create many software simulations it is recommended to keep a Theme dedicated to them.

Storyboard

You have to know precisely what you want to capture. For long workflows, do not hesitate to split them up in small logical parts. It is a lot easier to record a limited number of slides, certainly if you want to do narration at the same time (which I do not recommend). For a software simulation you don’t have to worry that much about the synchronization with audio, since that can easily be done while editing (phase 3). While preparing, keep in mind to limit Full Motion Recording slides when possible. In many case drag and other mouse actions can be replaced by alternatives. Example: instead of dragging in scrollbars click somewhere on those bars. There are a couple of reasons. Several users have reported issues with the FMR (Full Motion Recording) slides when publishing to HTML5 in some browsers. Originally those slides are SWF-based, they are converted to MP4 when publishing but apparently the result is not always optimal. A better solution is to replace FMR by Video Demo slides, but that slows down the recording workflow (see second post).

Using State Numbers in Formula question

Intro

Review the output tutorial published in this post. The two first use cases were about a knowledge check question where the learner needs to create physics formulas, by clicking the terms in the formula. Those terms are multistate objects, used as buttons. In a previous post we created one shared action to get the 'State number' which is stored in an associated variable for each multistate object. That same post also explained how to choose the sequence of the states.

The first use case has 3 terms in the formula, the second one has 4 terms. The terms are identical multistate objects, at the start of the exercise they show the same Normal state.

In this article youi'll see how to create the action for the Submit button, and the On Enter action which is needed to reset the slide and thus allow multiple visits to the slides.

Submit actions

Those are advanced action triggered by the Success event of the Submit buttons.

Formula with 3 terms

To the left of the equal sign the term should be 'Force', which is state 3 in the multistate object.

To the right of the equal sign we need 'Pressure' and 'Area', sequence is not important. Those are states 1 and 2. The easiest way is to calculate the sum of the two state numbers, which should be 3. To avoid confusion, create another user variable v_right to calculate the sum. The condition will be very simple: v_1 (state number to the left of the equal sign) needs to be equal to v_right.  To show the result, another multistate object SS_Feedback was created with these three states:

This feedback shape is on the slide (not hidden) but the Normal state is invisible to the learner. I used the same feedback for the next slide (4 term formula) by timing it for the rest of the project. It will be hidden after the two formula slides.

The Submit action doesn't need much explanation; I used the Delay command to mimick the default time a feedback is shown, allowing a new attempt:

Formula with 4 terms

Due to the sequence of the states, a correct formula will also have the same sum to the left and to the right of the equal sign. Of course we need another user variable v_left  to store the sum to the left. However, checking the sums will not be sufficient in this case. If the learner chooses exactly the same states on both sides, the sums will also be the same. Example: if only the states for the 'oval 'are chose on both sides. To exclude that situation, I use another expression with a multiplication of the state numbers. For the result of the multiplication two extra user variables a; re defined: v_leftM and v_rightM

Example: if only 'oval' states are used sum will be: 5 = 2 + 3. However the multiplication will result in 6 = 2 * 3. Whereas for the drum the sum is 5 = 1 + 4  but the multiplcation will result in 4 = 1 * 4.  Look at the Submit action in this case:

Enter actions (reset)

Those are advanced actions triggered by the On Enter event of the slides, to reset the situation. 

Formula with 3 terms

The 3 variables storing the state numbers need to be reset to their default value (1: corresponding with the Normal state). That is not necessary for the v_right, because it is always calculated. The option 'Retain state on revisit slide' is not activated, which means that on revisiting the slide the Normal state is reset automatically. The variable v_states needs to be redefined.

Since the multistate object SS_Feedback is timed for more than one slide, and can be hidden by actions on later slides, it is important to show this object and put it back in the Normal state. The automatic reset to the Normal state is not happening due to the timing. The Next button needs to be hidden.

Formula with 4 terms

The 4 variables storing the state numbers need to be reset to their default value (1: corresponding with the Normal state). That is not necessary for v_right, v_left, v_leftM and v_rightM because they will be calculated. The option 'Retain state on revisit slide' is not activated, which means that on revisiting the slide the Normal state is reset automatically. The variable v_states needs to be redefined.

The resetting for the feedback object is for the same reason as in the other Formula slide.

More?

I used a similar workflow in this small project, which is meant as exercise for the math's class about Multiplication tables.

It is a responsie project, uses the same shared action I have used in the use case I described here. The Submit actions are a little bit more complicated. Your challenge: try to replicate this project. This is the link:

CrunchNumbers










Shared action to track State Number

Intro

In this post you can find a Captivate tutorial, illustrating 4 use cases where the state number was tracked and used to find a solution.

This post will explain the setup of one Shared action to track the state number, when a multistate object is clicked to advance to the next state. To explain I will use the first two (physics) use cases. The first one has 3 identical multistate objects, with 3 states, and two possible correct answers:

The second one has 4 identical multistate objects with 4 states, multiple correct answers are possible:

You can find one of the correct answers in those screenshots. The workflow will be described step-by-step.

Workflow 

Events

Both use cases have:

  1. Success event of the multistate objects which are used as buttons. These events will be used to advance to the next state and to fill a variable with the tracking number. The index start with 1, which means that the Normal state is state 1. Being this the only goal of all the multistate objects in both use cases, the use of a shared action is recommended over duplicated and edited advanced actions. The shared action will be labeled StateNumberAct.
  2. The Success event of the Submit button. The action triggered by this even will have two goals: first to check the answer, second to show the Next button if the answer is correct. For a wrong answer the learner can have another attempt at changing the states and submitting the new situation. Those actions are advanced actions, labeled SubmitAct_3 and SubmitAct_4. They are similar but not identical.
  3. The Success event of the Next button when it appears which is the Default 'Go to Next Slide'.
  4. The On Enter event of the slides which is a Reset action for the slide. These advanced actions are similar but not identical, and they are labeled EnterThreeStates and EnterFourStates. 

Variables

Each multistate object needs an associated variable to store the tracking number. Since that number will be used only on the same slide, the variables can be reused. They will be reset with the On Enter actions. The four variables are labeled v_1, v_2, v_3 and v_4 (only needed for the second use case). If you are a fan of my blog, you may remember that I have those variables in a shared action in my general library to be used as external library. See Creation of Variables.

For the shared action StateNumber Act an extra variable v_states is used to store the number of states in the multistate object. The value of this variable will be defined by the On Enter action of the slide.

StateNumberAct (shared action)

This action will be triggered by the Success event of each multistate object used as button:

It is a two-decision action. The value of the tracking variable (used as parameter 2) is defined by incrementing, while the command 'Go to Next State' is done on the multistate object. The second conditional decision checks if the maximum number of states is reached (stored in v_states) and resets the tracking variable to 1 in that case. The first parameter is the multistate object used as button, which is a compulsory parameter contrary to the variable which is a candidate parameter, needs to be indicated to be a parameter.

Sequence of States

The state numbers will be used to check for a correct answer in combination with mathematical operators. For that reason there is no arbitrary choice:

Use case with 3 states

It has two correct answers, left side of the equation sign needs always to be 'Force'. I choose this to be state 3.

To the right side of the equation sign it can be 'Area x Pressure' or 'Pressure x Area'. Those are in state 1 and 2, sequence less important. Reason: check for correctness will calculate the sum of the tracking variables to the right of the equation sign, which needs to be 3. That lead to a very simple condition. Try to figure it out, or wait for the next blog post.

Use case with 4 states

This is bit more complicated. Similar to the 3 state case, we can calculate the sum of the state numbers to the left and the right. This leads to a sequence of state numbers as shown in the screenshot at the start. In all cases that sum will result in '5', because it will be either '2+3' or '1+4', in all correct answers symbolized in this list:

  • 2+3 = 1+4
  • 3+2 = 1+4
  • 2+3 = 4+1
  • 3+2 = 4+1
  • 1+4 = 2+3
  • 4+1 = 2+3
  • 1+4 = 3+2
  • 4+1 = 2+3

However there is a 'booby trap' here! Because the condition based on the sum will also result in correct when the states on the left and the right side are identical. Example: 2+3 = 2+3 which is not a correct answer. More is needed than the simple sum condition. Any idea? Find the solution in the next blog post.



Intro to Tracking States

Intro

Multistate objects did change my workflows in Captivate a lot when they were introduced. Use the tag 'multistate object' or 'states' in my blog to see this proved. However I often miss the possibility to follow up states. There is no system variable for that purpose. Partially due to some questions on the forums, I set up some use cases to see the usefulness of state tracking. In this introduction you'll find a Captivate published output of 4 use cases and a short summary of the basic setup I used.

Example 

Check the tutorial below. These are the four use cases:

  1. Three identical multistate objects are used, and learner needs to reconstruct a physical formula by clicking through the states. Two solutions are correct:
  2. Four identical multistate objects, and another formula (related with the previous one). A lot more combinations are possible here, both sides need to result in the same Force.
  3. One multistate object, being a Carousel of 10 shapes (fSVG  text). Some requests (forum question):
       Flag number needs to be shown
       Back button only visible when in second state
       Forward button only hidden when in last state
       Next button on slide may appear only when all states have been visited
  4. Slot machine with 3 identical multistate objects having 8 states.

You can reach the rescalable version of this example using this link, or watch the embedded one below.


For the design I used some slides from the Quick Start Project 'Diverse'.

Basics for  Setup

Tracking variable

For each multistate object a user variable is defined. It will store the tracking number. I choose to have numbers identifying the state, with Normal being state 1, or in programming language: index starts with 1. None of the multistate objects in the example project has an 'empty' Normal state. If that were the case, the index could have been 0 which is the common approach for most system variables. However the system variable cpInfoCurrentSlide also has an index starting with 1.

For the use cases the state commands 'Go to Next State' and/or 'Go to Previous State' are used. So, it is necessary to reset the variable when either the last state or the first state is reached, to get a correct value in all situations.

Example for the first formula: once the third state is reached, the variable needs to be rest to 1 for the next click.

Events

This is more of a general tip when using advanced/shared actions. It is easier to set up a workflow if you can spread the actions over multiple events.  

For the first two use cases (formula): the multistate objects are interactive which leads to the use of a shared action because the check of the answer is done by clicking a button. This is also more user friendly: control over submitting the answer is given to the learner.

For the Carousel the multistate object is not interactive. Only the success events of the Forward and Back button are used. You'll see in the videos that this makes the action more complicated because all situations need to be cared for.

The slot machine is using JS for a random number and a While command, and can be triggered by the multistate object which is interactive. I added a Check button, to avoid a very complicated action. It is also the only example where I provided a Reset button (see previous blog).

On Enter event is used to reset variables and the situation on a slide. This is necessary when you allow to revisit the slides, but also because I tend to reuse variables.

State Choice

In the specific use cases of the formulas, the state tracking variable is used with mathematical operators to check for the correct answer. In that case it is important to choose a correct sequence for the states.

Example for the first use case: 'Force' is in the third state, because the used check function is to create the sum of the tracking variables for the first and the second state (1+2) which needs to be equal to 3 (third state). 

How?

I will post workflows for the use cases, including (interactive) video in future posts.


Score in Software Simulation

Intro

This is a short blog post, answering a software simulation (assessment mode) question on the forum. If you are interested, here is the link.

You probably know that in such an assessment scores are attached to one interactive object on each slide: either a click box or a Text Entry Box.It offten happens that the same action can be done by clicking more than one 'target' on the slide, which will need customizing that slide to add at least one extra click box, which will also be scored. However that will lead to a results slide where the acquired percentage is not correct. Reason is that all scored objects are included in the total score. You can verify that easily in the Advanced Interaction panel, to be opened from the Project menu or with the shortcut key F9. Here is an example. Slide 59 has two target click boxes, both are scored.

The OP wants to show the correct percentage to the learner in the project, but for the reporting to the LMS Pass/Fail reporting is sufficient which can be done by basing it on the required pass points.

Variables

    • A while ago this blog post described using the system variables used in the Results slide: Quizzing System Variables. For this blog post the relevant system variables are:

cpQuizInfoTotalQuizPoints: will have the value you see at the top of the Advanced Interaction panel, and is not correct in this case because it includes the scores of the extra target click boxes.

cpQuizInfoPointsscored: will be correct because on each quiz slide only one of the targets can be clicked.

cpInfoPercentage: is calculated from both previous variables and will be lower than expected for the learner.

cpQuizInfoPointsPerQuestionSlide: this system variable is not behaving as expected for slides with multiple scored objects. It will NOT show the total score of the slide, but the score of ONE scored object. I will presume that in case of a slide with two target click boxes, both of them will have the same score. This is also valid if you prefer shape buttons instead of click boxes.

Since there  is no need to transfer the percentage to the LMS, it is possible to use user variables. Create these variables:

v_TotalScore: will replace the system variable cpQuizInfoTotalQuizPoints

v_TooMuch: will store the total score of the extra click boxes. I assume that click boxes on the same slide have the same score.

v_Percentage: will store the result of the calculation from v_TotalScore and cpQuizInfoPointsscored

Workflow

Simple

The easiest way would be to count the number of extra targets. If all the click boxes have the same score of 1 point you could calculate the correct percentage with this advanced action:

You can trigger this advanced action with the On Enter event of the custom Score slide. It will allow you to display the correct Percentage. 

Advanced

Situation becomes bit more complicated if not dual targets (click box/shape button) have the same score (of 1 point). In that case you can take advantage of the weird behavior of the quizzing system variable cpQuizInfoPointsPerQuestionSlide  (see above). I used this shared action, triggered by the Success action of the targets, and the 'Last Attempt' action which is used here (Success action on a background Shape covering the complete slide). I assumed that the Last Attempt action of the targets is set to No Action. That typical workflow was used by the OP, and explained in this blog post

You see that this shared action has no parameters, you could also create an identical advanced action, if you still fear shared actions. My main reasons for this choice:

  • Shared action can have a small description
  • Shared action appears in the Library, which make it easier to check the Usage
  • This shared action has no parameters, so it takes the same time as the advanced action to be applied to all the necessary events.
  • It is much easier to transfer this shared action to another Project.

There is a small change to the action to be triggered On Enter for the Results slide:

Conclusion

On the Results slide you can insert most of the default fields, an overview:

  • You scored:  the system variable cpQuizInfoPointsscored is correct
  • Maximum score: you need to replace the system variable by the user variable v_TotalScore
  • Correct questions: will be OK, it is the system variable cpQuizInfoTotalCorrectAnswers
  • Total Questions: will not be OK, you could add a supplementary command to the shared action similar to replace the system variable cpQuizInfoTotalQuestionsPerProject by a decremented user variable.
  • Accuracy: you need to replace the system variable cpInfoPercentage by the user variable v_Percentage
  • Attempts: will be OK, it is the system variable cpQuizInfoAttempts





Multiple Failure Messages for Shape Button

Intro

Coincidence because this blog, answer to another forum question, is an alternative workflow to my most recent blog post about Software Simulation Assessments.

Summary of the request:

  • Learner needs to click a specific region, two attempts are allowed.
  • On Success the Success message appears and the project advances to the next slide.
  • On First failure a Hint message appears and an arrow indicates where to click. Moreover a Retry button appears.
  • When the Retry button is clicked the Hint text and arrow should disappear.
  • If second attempt is successful, Success message appears and the project advances to the next slide.
  • If the second attempt is failed, a Sorry message appears with a Continue button to go to the next slide.

Contrary to the previous article, the slide is created manually (no click boxes are added automatically as in a simulation). For that reason I preferred shape buttons over click boxes. A shape button can be made invisible by setting Opacity and Stroke to zero.

The same idea is at the origin of the workflow: at the bottom of the Timeline, a shape button (invisible to the learner) covering the full slide is added. Have a look at this screenshot of the Timeline of the first slide (Flags):

The Success event of this big shape button will trigger the FailureAct action to show the Failure messages. 

Sample project

Watch a scalable version using this link. The fixed resolution version is below:


The Timeline screenshot of the first slide (Flags) shows the objects on this slide, from bottom to top:

  • The shape button covering the slide SB_Back. This button will trigger an advanced action 'FailureAct' with the Success event!
  • Gr_Flags groups the four flag images
  • Title which function as instruction
  • A multistate shape SS_FailureThe normal state is invisible (same as the shape buttons), it has a state for the two Failure situations. The Hint message is stored in a user variable v_hint. Reason: this allows to time this message shape for the rest of the project. The workflow is needed in a sequence of similar slides, message can be hidden when no longer needed.
  • Shape button SB_Next, also a multistate object. I took out the Rollover and Down states, but it has a custom state 'Second' where the label changed to 'Continue'. 
  • Shape button SB_Flags, multistate object where the custom state 'Indicator' adds the arrow pointing to the correct location. This shape button is 'invisible' and over the Belgian flag on the first slide, over Portugal in the second slide (see screenshot belos). One of the advantages of shape buttons over click buttons: they can have custom states, and you can edit the form, needs not to be a rectangle:
  • The Text caption is added to show the state of the variable v_attempt. It is part of the debugging workflow, and I forgot to hide it before publishing.

Step-by-step

Variables

Two user variables are needed:

  1. v_attempt: has a start value of 0 and will be incremented on each failure (which is a click on the button SB_Backx).
  2. v_hint: will store the text to appear on the Hint message (first failure). Careful: you will need to increase the length of the inserted variable because 50 will not be sufficient in most cases.

FailureAct (Advanced Action)

This action is triggered by the Success event of the shape button SB_Back. The OP preferred to avoid Shared actions. You can assign this action to that shape button on the first slide, but you'll need a duplicate advanced action for each slide, because the color marked items need to be changed:

CleanAct (Advanced Action)

Action triggered by the Success event of the shape button SB_Next. Similar to the previous action, you'll need a duplicate action for each slide. The to be edited items are marked in color.

EnterAct (Shared Action)

It is a very simple shared action, with only one parameter. The text of the Hint is the parameter (literal). The reset of the other items has been done or is automatically happening because the option 'Retain State on Slide Revisit' is unchecked  for the multistate objects which is the default.
The following screenshot shows how the '{P}' button is clicked and opens the Parameters dialog box where you enter the parameter:

Success?

For the Success situation I just kept the default Success message. This is the Actions tab for the shape button SB_Flags and similar:

Two messages are allowed, Success 'caption' (is a shape) is activated, and the Last Attempt action is set to 'No action'.


Overview

The Advanced Interaction panel shows which actions are attached to which events:

Software Assessment: different failure messages/attempts

Intro

Thanks to a question on the Adobe forum: ‘How to have two different Failure messages for click boxes in a software simulation, assessment mode?’, I created a sample project showing the solution, and will explain the workflow step-by-step. It has become a pretty long article, be prepared.

At this moment multiple Failure messages  (up  to 3) depending on the number of the attempt, are only possible for question slides. A click box nor a button have that functionality. Moreover interactive objects, question slides, Drag&Drop slides have only two events to trigger an action: Success and Last Attempt. This means that you cannot use the first attempt to change a situation at all. Of course you could add events using JavaScript or InfoSemantics CpExtra widget. I accepted the challenge to try to figure this out only with Captivate’s features.

Example project

Watch this project either with the embedded fixed resolution version below, or by clicking this link for a rescalable one (recommended).



Step-by-step workflow

Slide setup

Have a look at the Timeline of the first slide with a scored click box:

From bottom to top you have

  • A shape button, labeled ‘SB_Back2’ (because this was slide 2 in the project). That interactive object covers the complete slide and needs to be at the bottom, behind the original click box. This means that such a workflow is impossible in a fluid box where stacking is prohibited. It may seem better to create a SVG (used as button) which has a ‘hole’ corresponding with the original click box. However that would be a lot of work, since that click box will be in another location on all slides. Only the Success event of this shape button will be used, and you can leave the number of attempts at Infinite or 1, doesn’t matter.
    Check the screenshot of the Properties, Actions tab: the Success message which appears when the Back button is clicked will act as First Failure message. You may call this ‘cheating’.
    This back button is triggering a shared action labeled ‘BackAct’.
  • The shape ‘SS_Hint’ has no role in the workflow, was in this assessment as help.
  • CB_Assess is the original click box inserted in the software sim, assessment mode. The OP provided 2 attempts, but that has to be changed to 1 (see further). I deactivated the Failure message, and kept only the Success message. You see the Properties of this click box to the right. I didn’t use the Failure message, but replaced it by a multistate shape.
    The action On Success is to proceed to the next slide with the next action to be done by the learner. Since there is only one attempt, the Last Attempt action is a Failure action. It is an advanced action ‘FailAct’.

    It is impossible to have states for the default feedback messages of interactive objects. You can see in the Timeline that this multistate shape is labeled SS_Failure and that it is displayed for the rest of the project, always on top. Its visibility is triggered by state changes.

  • The Failure message, which is the second message, is labeled ‘SS_Failure’ and you see the two states in this screenshot. The Normal state is completely transparent and has not text. The state ‘Second’ has the failure message, and the multistate object will be hidden until the ‘second’ Failure attempt happens. 

Actions

FailAct  (Advanced action)

This action is triggered by the Last Attempt event of the Click box. 

The Failure shape is shown, and will have the Second state in place (see below in the shared action ‘BackAct’. Since it is not a default feedback message, it will not appear automatically nor leave the slide paused for 3 seconds as will be the case for the Success message. That is the reason for the Delay command, followed by navigation to the next slide.

You see that this advanced action will be the same for all the click boxes, because of the Timing of the SS_Failure message for the rest of the project.

BackAct (Shared action)

This action is triggered by the Success event of the shape button SB_Back2. 

Because there are so many instances of that shape button, I largely prefer using a shared action over duplicated edited advanced actions. In the next part (other slides) you’ll see how to avoid having to enter the parameters on each slide. Here is the screenshot of that action, with the indication of its parameters:

The state of the Failure message will be changed to show the ‘second’ message when the click box is not correctly clicked. To allow such a failure you need to hide the back shape button so that a click outside of the click box is possible. But since you don’t want the Failure message to appear right away, you need to hide it. As you could see it will be made visible with the Last Attempt advanced action. Sequence of the actions is very important here: you need to change the state before hiding.

ResetAct (Shared action)

This action will be triggered On Enter for each slide with a scored click box. Since the OP provided multiple attempts on quiz level, I needed also to take into account that the slide will be revisited and custom objects have to be reset in their original status. Custom objects are the shape Back button (SB_Backx) and the multistate shape used for the second Failure message (SS_Failure). That explains why I preferred a shared action with these three parameters:

This is the screenshot of the action with parameters filled in for the first slide:

Slides setup (after first slide)

1. Slides with a Click Box

  • SS_Failure: since this shape is timed for the rest of the project, you don’t have to do anything on slides with a click box.
  • SB_Backx: the shape button covering the slide. I recommend to copy/paste SB_Back2 from the slide with the first click box, having the Shared action ‘FailAct’ applied to it. Take the time to rename the new copy which will have a generic name starting with SB_Back. I prefer to just change the number to the slide number. It is very important that you send this new instance to the Back, using either the right-click menu, Arrange or the Align toolbar, Arrange options.

    The attached shared action will be edited automatically to use the correct Back button for the slide.

  • EnterAct: needs to be applied manually to the slide. There is no workaround, you’ll need to choose the correct parameters. Only the first parameter (SB_Backs) is different, both the failure message and its state are always the same.

2. Slides with Text Entry Boxes, FMR or Video Demo slides, Static slides, Results slide

The two failure messages were only needed for the click boxes. You’ll need a simple On Enter action to make sure that the Failure shape has been hidden. With static slides I mean the very short slides which sometimes appear during capture and eventually intermediate explanation slides. You can use the Advanced Interaction panel to help with this setup. Here is an example of this panel for some slides:

Watch the labeling of the Shape back buttons on slides with Click boxes, and the applied actions to the Back button, the Click box and On Enter.

Slide 7 has a Text Entry box and shows the simple State action to hide the Failure message.

This project had 26 interactive objects, Click boxes and Text Entry Boxes. Each of them has a score of 1pt, which leads to the total score showing at the top. It is that score which is stored in the quizzing system variable cpQuizInfoTotalProjectPoints/cpQuizInfoTotalQuizPoints and is used for calculating the displayed fields on the Results slide.

Conclusion

My apologies for this rather long blog post, where I tried to explain the full workflow in detail. A simple question, however with not a real simple answer, agreed? Questions are always welcome. Post them in the comment.