Interactivity in Captivate (Back to basics)

Intro

Recently I presented a webinar about Interactivity in Captivate. It was not a public webinar, but composed of Adobe Community Professionals. Lot of the attendees were new to Captivate but well versed in other Adobe applications. However there were also some CP-experts. As usual I don’t present with Powerpoint, but with a Captivate presentation.  That makes it possible to publish later as an interactive tutorial, which you'll be able to view. It needed some editing of course to allow full control to the learner. Narration was added as well.

The design is based on the Quick Start Project 'Wired' included in the Assets panel of 11.5.1.499. Based on it I  created a personalized Theme, since that project in its non-responsive version has no master slides. The original fonts were replaced by two Adobe fonts (Termina and Filson Soft family). The interactions were recreated with workflows which I prefer over the embedded ones. 

The goal was to show popular workflows to create interactivity. You will see: Branching (menu), Forced viewing,  Progress bars, Click&Reveal, Drag&Drop, Knowledge Check slides, Games. In the webinar the presentation was used along demonstrations of the used workflows in simple examples, with lot of good practice tips. Lot of multi-state objects were used, Guides, import of source Photoshop files, shared/advanced actions and variables.

The menu slide after the start slide is the pillar. When you see a Back to Menu button appear, you'll be navigated back to this slide. The tooltip for this back button is part of the Rollover state.

Click to see the presentation in a rescalable version or watch the embedded version (fixed resolution) below:

Feedback

Did you like this presentation? Would you like more 'back to basics' blogs, or tutorials? Do you have questions? Are you able to recreate the demonstrated workflows? Lot of questions where I would like to see some answers.


Sequence check slides (updated version)

Intro

More than 7 years ago I wrote a similar blog post: how can you check the sequence of clicks. Of course the embedded tutorial was a SWF, since only that type of output was supported at that moment. This post is an update with HTML5 output, and taking advantage of new features (multistate objects, SVGs as buttons). 

Example

Play with this example project. I inserted two examples of sequence checks:
  • Geo slide: alphabetically clicks on countries (used English names, not the original names of the coutnries)
  • Keypad slide typing the pincode on a numeric keypad.

First and last slide are taken from the Quick Start Project 'Aspire'. The images used as button also are from the Assets panel.

You probably will have more ideas where this workflow can be used for Knowledge Check slides. There is a sequence type of quiz slide, you can test a sequence with Drag&Drop slides, but these alternatives are less limited in design. ould love to hear your proposals for sequence checks as well


Setup

Variables

Similar to the old post I used only two user variables (to be created):
  • v_counter: will track the number of clicks on interactive objects. It starts with a default value of 0. It is reused on the second sequence slide, by resetting to the default value using the On Enter action of that slide.
  • v_correct: will track the number of correct clicks, set up with default value of 0 and re-used in the same way as the previous variable.

Multistate Objects

Instead of the hide/show workflow used in the original post, multi-state objects to display the feedback are used. That object is labeled Tx_Display (for the Geo-slide) and Tx_DisplayBis (for the Keypad slide). Look at the screenshot of the Object state panel for Tx_Display:

The Normal state is empty (easy to reset, will automatically reset when returning to the slide if ‘Retain State’ is unchecked). The 6 following states correspond with the correct sequence, hence their labeling. The last state is the Wrong state. The sequence of states is important, because I will be using the ‘Go to Next State’ command in the actions.

SVGs

If you did read some recent posts, you know that I am a big fan of the use of SVGs both for image and interactive objects. In this case I used them mostly because they remain crisp at any resolution and lead to very small file size. The file size of the published project is less than 4MB. ¨Probably half of that size is due to the bitmap images on the ready-to-go slides, and the unique PNG which I used for the Background of the Keypad. Look at the timelines of the sequence slides. SVGs are grouped. Too bad that you cannot recognize the interactive object from the color (should be green), but they all have a pausing point set at 1.5secs (Europe SVG is not a button).

 

The group Gr_Wrong on the Keypad groups all button SVGS which are not used in the pincode. Those buttons are on top of the image, and can be hidden, since the remaining keypad image shows them as well but in a non-interactive version. For the Geo slide, the colored country  SVG buttons are also on top of a big SVG (Europe), but I don’t want the colored ones to disappear, for that reason the buttons will be disabled, not hidden (see advanced actions below).

Actions and events – Geo slide

The colored country SVG buttons trigger an advanced action On Success. There are 6 countries, which means 6 advanced actions (created with the duplicate function). The five first actions are similar to this SV1_Act:

Only the items marked by a red oval have to be switched for the actions SV2….SV5Act: the name of the SVG button in the first decision, and the literal (number) in the second decision. If the clicked country is not fitting in the correct sequence, the learner sees the Wrong state in the multistate shape and the Retry button will appear.

The last country SVG button (SV6) has a slightly different action, derived from the previous one.  Reason: the Next button has to appear if the sequence is correct. That extra command is highlighted by a blue rectangle.

The Next button has the default command ‘Go to Next Slide’ on its Success event.

The Retry button needs to  everything, as you can see in this screenshot. Action is triggered by the Success event:

Actions and events – Keypad slide

Because of the re-use of the variables v_counter, v_correct and the button Bt_Next which is timed for the rest of the project, the On Enter event of this slide is used to reset everything to default values. If you want to allow going back to slides, a similar action would be needed for the Geo slide, but that was not the case in the example file. The On Enter action is pretty simple:

Some explanation may be needed for the Hide command which I highlighted. Since the required pincode (29791) needs the number ‘9’ twice (second and fourth position in the sequence) I have put two SVGs on top of each other: SVG_Two and SVG_Four. By default SVG_Two is visible, but SVG_Four  is hidden and becomes visible With the same action where SVG_Two is hidden. You cannot have two interactive objects on top of each other when both are active at the same location.

The Number buttons trigger an advanced action On Success.  It is similar to the one in the Geo slide, except for using Hiding instead of disabling. Example of the first number button (which is 2):

As explained above, for SVG_Second (number 9) is bit different

Similar to the Geo slide, the last correct button (number 1) will show the Next button if all was correct:

Any wrong number button will trigger this action using its Success event:

The new Retry button, labeled RetryBis is similar to the one on the Geo slide, triggers:

Remember that the SVG button Four  is in the same location as Two, because both have the number 9. That is why SVG_Four has to be hidden and SVG_Two shown.

Why no Shared Actions?

Although we have very similar actions for the SVG buttons, both on the Geo slide and on the Keypad slide, this is a typical use case where it is impossible to use shared actions. Problem are the ‘literals’, which should have been converted to parameters. Look at the screenshot of the action SV1_Act posted earlier. Logically these items should be parameters:
  • The SVG button SV_1 – compulsory parameter in the first decision
  • The literal ‘1’ in the condition of the second edition, not compulsory
  • The multistate object Tx_Display, compulsory parameter in the second decision
  • The state Wrong in the ELSE part of the second decision
  • The button Bt_Next in the ELSE part of the second decision

Why is the literal a problem? Because it is also used in the Increment command. If you replace it by 2 for the second button, this will also be the case in the Increment command. I may have a workaround, but it is not always functional.

Second reason: with the workaround the parameters would increase to 6, which is my limit for a usable Shared action. Whereas using duplicate functionality for the advanced action is lot quicker, since only two items need to be edited.

This blog is already way too long. If you like to hear about my ‘thumb rules’ for choosing between duplicate advanced and shared actions, post a comment. Maybe I’ll dedicate another blog to it.

Avoid frustrations in Pretest.

Why?

More than 7 years ago I wrote a post ‘Quiz and Frustration‘.  It was about a use case,  asked for by a forum user, how to stop an assessment when the learner could never succeed because he lost already too much points. It feels like being kind to the learner, avoiding frustrations. Recently a similar question appeared, this time about a Pretest. Pretest slides as designed since many versions in Captivate, are also frustrating because of their limitations. You need to have all the Pretest slides in sequence at the start of the course, all navigation will be disabled, almost all commands for On Enter events are greyed out. In short: there is almost no possibility to tweak Pretest slides, reason why I don’t remember having used them ever.

In Flanders there is a saying ‘Twee vliegen in één klap’ (killing two flies at once). Let me show a workaround for a Pretest (without the normal limitations) and update  that old post, taking advantage of improvements since …. version 6. Have to refurbish a lot of posts, which are still attracting visitors, with HTML5 output. Here is one of them.

Example file

Explore this published file:


The course starts with a Pretest (7 questions). Based on the obtained scores, 3 situations are possible: Learner gets a passing score on the Pretest. In that case he will see the score slide. Learner answers some questions, but due to the low score, will not be able to finish the pretest with succes even if all remaining questions are answered correctly. In that case the remaining questions will be skipped and the learner will have to view content slides. Learner finishes pretest but at the end didn’t get a passing score, same situation as in the second one: learner will have to view content slides. I didn’t add content slides, just a symbolic one. It is possible that other actions are wanted at the end, but focus of this example is only on the workflow to have questions skipped (second situation).

Setup

It was not possible to use the default Pretest slides because they do not allow advanced actions to be triggered with the On Enter slide event, which is possible with normal Quiz slides. That is why I needed to use those slides for the 'Pretest'. This may lead to a problem if you want to add a final quiz. Quizzing system variables, part of which are transferred to the LMS, will take into account all quiz slides. The easiest way to avoid this is to have the final quiz in a separate file, to which you link from this course. With JS  or with the CpExtra widget by InfoSemantics - Australia, it is possible to change the values of the system variables if you really need the final quiz in the same course. 

I will explain the variables used in this example, and the actions/events in the rest below.


Variables

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

System variables

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

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

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

User variables

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

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

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

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

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

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

Advanced Actions – Events

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

EnterFirst

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

The variable v_Passcore is calculated from two other variables having a default value. In this case v_MaxPretest was 40 points  (maximum score) and v_PassPerc = 80% required for passing the test. Result will be 32 points for v_Passscore.

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

EnterPre

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

CheckPre

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

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

The second decision is conditional, and will navigate the learner out of the Pretest (Jump to Score slide) if he will not be able to pass the test. If it is still possible to acquire the passing score, the test continues.

EnterScore

This is the most complicated action, because it has to take care of three situations.  Each situation results in a conditional decision:

  1. If the learner has finished all questions (last visited slide was slide 8, which is the last question slide), but did fail, (comparing score with v_PassScore).  In that case the appropriate state of an multistate SVG and a multistate text container is shown.  The Next button appears as well.

  2. If the learner has not finished all questions, (last visited slide was not slide 8) another state is made visible for both multistate objects, and the Next button appears.

  3. If the learner has a passing score for the test, another state is shown and not the Next button, but the ‘ToTest’ button appears, which will navigate the learner to the results slide (from which a separate quiz file can be launched).
Next button has the usual ‘Go to Next Slide’, whereas the ToTest’ button jumps to the results slide, which is the last slide in the example file.

Conclusion

Of course the same approach can be used for a normal quiz. It can spare the learner a lot of frustrations if he started the quiz, without mastering the content, and quickly sees that the result will never be sufficient. That was the original reason for the first older post. 

It would be interesting to know if you ever use the default Pretest slides, because I really dislike the many limitations. All Pretest slides need to be at the start of the course and in sequence. All navigation will be disabled, on the playbar as well in the TOC, not only for the Pretest slides but also for content slides which is very annoying. What do you think?

Would it be possible to replace the Pretest slides by Knowledge Check slides? I suspect it would be possible, maybe stuff for another 'anti-frustration' post? The advantage would be that a final quiz will be easier to set up.

Graded Surveys (Radiobuttons Interaction)

Intro

Several years ago I created a blog about a Graded Survey, which still attracts viewers regularly. Some visitors complain that the embedded example is SWF.  You may underestimate the amount of work which is needed for that type of blogs which are all offered for free. Impossible for me to convert all blogs to the present versions and for HTML5 output.

However yesterday a user asked another similar question on the forums. You can visit the thread here

The title doesn’t really reflect the full question, which was clarified later on. User wants to have survey slides, which each have two statements. The learner should rate each statement with a number between 0 and 10, and the sum of both ratings should always be 10. As usual I have a dislike for the word ‘force’ used in the title. The example you will be watching, is not forcing really. I considered three possible situations:

  1. Two ratings have a sum of 10, rating is accepted immediately.
  2. Sum of the two ratings is not equal to 10. In that case the second rating will be edited to achieve a sum of 10. Learner can accept this change or if he prefers:
  3. Learner gets the opportunity to retry to set correct ratings.

Contrary to my old blog post, where I used a MCQ, for this solution used the Radiobuttons interaction. Likert question was not possible, since I needed a rating scale with 11 dvisions (0-10). Moreover Likert is not supported for responsive projects. Although the example is a non-responsive project, the described workflow would also be possible for responsive projects (some changes needed)..

Example File

Watch this example.  You’ll see three survey slides after the title slide. Each survey slide has two statements with a rating scale. After finishing the survey slides, you’ll see the X_Score and Y_Score on a results slide. You can open the example from this link or watch the embedded movie with a fixed resolution:

Setup

Due to this specific setup, extending the survey to more than 3 survey slides is very easy.  Just duplicate a survey slide and edit the statements. Everything will work fine. I will explain the objects using the timeline, the user variables to be created and the advanced actions.

Timeline Survey slide

Have a look at the screenshot of the timeline of the FIRST survey slide:

From bottom to top you see:
  • Two statements, labeled SS_XStatement, and SS_YStatement. I didn't create a dedicated master slide with two placeholders for these statements, but that would be possible. Labeling of those statements is not so important, because they are not used in any action.

  • Two instances of the RadioButtons Learning Interaction, used as rating scales. Please don't be confused by their green colored timeline, because these interactions are not interactive, they are static. This is a design bug. The properties of one interaction can be seen in this screenshot:
    Important fields are marked in Red or Green. Beware: you have to create the variable - here ‘v_X‘ i- n the Variables dialog box.

  • Question1: text above the statements with the warning about the sum (could also be a placeholder on the master slide)

  • Submit button: needs to be a shape button, because it has to be timed for the rest of the project. Eventually you can use a SVG or bitmap image (from 11.5 on). Both can also be timed for the rest of the project.

  • A group Gr_Feedback, including the Accept button, Retry button and the Message which appears when the sum of the rates is not equal to 10.  This group is also timed for the rest of the project, which means that both buttons need to be shape buttons, SVG or bitmap images.

Variables

The use variables to be created are:
  • v_null: empty variable is used to clear the associated variables to the learning interactions. More details about its functionality in this blog

  • v_start: will store the first frame of each survey slide. For the Retry action, the micro-navigation solution described in Replay Slide (scenario 2) is used, hence the necessity of the variable which can be empty as default value. This variable is reused on each survey slide.

  • v_X: variable associated with the rating scale (interaction) of the first statement, default can be empty. This variable is reused on each survey slide. Default value can be empty.

  • v_Y: variable associated with the rating scale (interaction) of the second statement, default can be empty. This variable is reused on each survey slide. Default value can remain empty.

  • v_sum: will be calculated by adding v_Y to v_X. Default value can be empty.

  • v_XScore: will be calculated after each survey slide, by adding the value of v_X. Default value can be empty.

  • v_YScore: will be calculated after each survey slide, by adding the value of v_Y. Default value can be empty.

Actions/events

EnterAct

This action is assigned to the On Enter event of all the Survey slides. It is meant to reset everything as is visble  in this screenshot:

The frame number of the first frame is stored in v_start, the variables v_X and v_Y are cleared. The group with the Accept button, Retry button and Feedback message is hidden, and the Submit button is shown.

SubmitAct

This action is triggered by the Success event of the Submit button. Because that shape button is timed for the rest of the project, you need only one instance of this two-decision action:

The first decision ‘Always’ is not conditional, calculates the value of v_sum which is used in the condition of the following decision.

Second decision ‘Checkit’ verifies if the sum of the ratings is equal to 10. If that is the case, the ratings for X and Y score can be added to the totals, and navigation to the Next slide is done. If the sum is different from 10, the group (2 buttons + message) shows up. The value of v_Y is corrected (10 – v_Y) which will show immediately on the rating scale. The learner can accept this correction or opt for retaking (Retry) the rating.

AcceptAct

This action is triggered by the Success event of the Accept button. Because that shape button is timed for the rest of the project, you need only one instance of this Standard action:

You see exactly the same commands as for the THEN part of the SubmitAct.

RetryAct

This action is triggered by the Success event of the Retry button. Because that shape button is timed for the rest of the project, you need only one instance of this action:

As described before, I use a Replay action with re-entering the slide to reset the survey slide for a new attempt. Although it has only one command, it is necessary to create an advanced (or shared action) because the command ‘Expression’  is not available as simple action.

EnterResults

This action is assigned to the On Enter event of the Results slide. It is necessary to get rid of the objects displayed for the rest of the project:

Conclusion

Hope you liked this solution? For a responsive project with fluid boxes, the workflow will be more cumbersome, not only because of the Fluid Boxes setup but also because:

  • You cannot use grouping in fluid boxes.
  • The possibility to have objects timed for the rest of the project is limited. It is possible if the slides are based on the same master slide, which could be the case for the survey slides.

Could I have used Shared actions? Of course,  I dragged the Replay action from my external library with Shared actions bit for your convenience converted it to an Advanced action. The other actions can be converted to shared actions as well. However withthe described setup, the advanced actions are used only once. If you have issues with the timing for the rest of the project in a Fluid Boxes project, I would certainly recommend to use shared actions because you’ll need an instance on each survey slide.

SVGs for color-based quiz

Intro

Being able to use SVG’s, for which you can limit the clickable area to the SVG itself, creates a lot of opportunities. In a recent post I explained how you can use them for a custom Hotspot question. 

This time I played with Flags, in Europe a lot of national flags have a cross embedded. Play with this example file. After the title slide which has some explanation, you have to color 5 knowledge check slides, Have fun. 

Small warning: if you are on a small screen, you may have to insist to color the small parts (especially on the UK slide). The part is really clicked when you have seen it shrink. You can play from this link (scalable HTML) or with the embedded version (fixed size):

Setup

You’ll find details about the setup,with topics:

  • Objects (including timeline)
  • Variables and Events
  • Advanced actions
  • Shared action (has been used 47 times)

Objects – timeline

Have a look at the Timeline of slide 2 which is the first quiz slide (flag 1, Denmark):

From bottom to top you see:

  • SS_Proback1: (smart shape) the white background of the progress bar (bottom left). Since the flags have different amounts of parts, I preferred to have an individual background on each flag slide, whereas
  • SS_Progress: (smart shape) progress bar is timed for the rest of the project. It has a normal state which is invisible (no Alpha nor stroke), and a state for each added green star, totals 18 states but not all states are used on each slide.
  • Gr_Denmark: has all the flag parts, on this slide 5. All parts are SVG’s used as buttons with the default pausing poins at 1.5secs. Each SVG has 3 object states: Normal (with a black pattern), Correct (colored), Wrong (Gray tint). Here is the screenshot with object states for the Cross part of the UK flag:
  • Gr_Colors: group with 5 colors, timed for the rest of the project because same colors are used for all flags. Colors are shape buttons, default pausing point at 1.5s. They have 3 states: Normal, Current and Dimmed. Here a screenshot for the Red smart shape.
  • Country_DK: country name (text)
  • SB_Next: shape button timed for the rest of the project, no pausing point, with 3 InBuilt states (Normal, Rollover, Down)
  • Title

Variables and events

Three user variables are created for the actions:

  • v_color: will store the name of the color chosen from the color shapes; the exact names are needed which are Blue, DarkBlue, Red, White and Yellow.

  • v_counter: will track the number of correct flag parts which have been colored (is equal to the number of stars displayed by the progress bar).

  • v_max: the number of flag parts to be colored. For the first two flag slides this is 5, for the two following slides it is 9 and the last flag slide has 17 parts.

I didn’t provide a replay course button at the end, to limit the number of events and actions. The used events  are:.

  • On Enter slide event for all flag slides. They trigger a similar advanced action, depending on the number of flag parts: 'Enter5' (first two flag slides), 'Enter9' (two following slides) and 'Enter17 'for the UK slide.

  • On Enter slide event for the End slide triggers 'EnterEnd'.

  • Success event for the Color shape buttons trigger a similar advanced action 'Blue_Act', 'DarkBlue_Act', 'Red_Act', 'White_Act' and 'Yellow_Act'.

  • Success event of the SVG’s which are the flag parts (used as buttons), trigger all the same Shared Action 'FlagAct'.
I will explain why I choose for advanced or shared actions for those events.

Actions

Enter5Act/Enter9Act/Enter17Act (advanced actions)

Those very similar actions are triggered On Enter of the flag slides, depending on the number of flag parts. Here is a screenshot of 'Enter9Act':

You see it is mainly a Reset action. Because the color shape buttons are timed for the rest of the project, it is necessary to reset their state to Normal when entering a new slide.  That wouldn’t have been the case if I had repeated the colors on each slide, and left the option ‘Retain state …’ unchecked. However such a setup would have complicated the actions a lot more, than using this advanced action On Enter. The actions for 5 and 17 parts are almost identical, only the value of the variable v_max will change (command marked in red in screenshot). Because of the limited number of actions (3), and the fact that only one command had to be edited,  I prefer duplicate advanced actions over a shared action with multiple parameters.

EnterEnd

This simple action will hide several items which were displayed for the rest of the project and no longer necessary on the Congratulations slide:

Blue_Act, DarkBlue_Act, Red_Act, White_Act, Yellow_Act

These advanced actions are triggered by the success event of the color shape buttons.

The 5 actions are also very similar, here is the screenshot of the Red_Act:

I could have used a shared action, but preferred duplicate advanced actions. Four of the color buttons need their state to be changed to Dimmed, the active clicked button to Current and its color has to be entered as value for v_color.

It is very simple to duplicate the actions for the other colors, and change the first command and switch one dimmed and current state to adapt the action to the new active button.

FlagAct

Shared action triggered by the Success event of the flag parts (SVG used as button). In older versions than 11.5 this setup would not have been possible since many bounding boxes are overlapping. The shared action, which I used 47 times, looks like this:

I indicated the 6 parameters by a color code. Four of them are always the same, but they are compulsory, need to be parameters (Progress bar, Next button, Wrong and Correct states). Only the color and the flag part are important to set up correctly. A good labeling system for the flag parts can help. You may have seen that I took care of labeling in a consistent way.

Conclusion

Hope this example releases your creative ideas for similar use cases, both for adult learners and (of course) kids.  It would be great if you commented about that. Or do you have questions, suggestions?

Forced view - special use case

Intro

Another blog and example output, due to a question by a user today. 

“I have groups of slides. Each group consists of a handful of slides that has event video on each slide and nothing else. The videos autoplay. The user can enter these groups at any point and must watch each video before being redirected back to a main menu. “

After I had gotten all details, I created this example file. The assets panel in 11.5 was very useful as you can see. Only Chapter 1 has been worked out with 4 slides containing event videos. For Chapter 2 and 3 only one slide is available with a back to menu button. Try it out: you can start with any video, but then the sequence will be linear: 1-2-3-4, 2-3-4-1, 3-4-1-2 and 4-1-2-3 are all possible. You can use the Chapter 1 button on the main menu as many times as you wish. It should be foolproof. However… you have to watch the videos from start till end.

The embedded movie is at a fixed resolution. The project is published as Scalable HTML and you can also play it directly in any resolution from this link.


Setup

Variables

Four Boolean variables were created: v_one, v_two, v_three, v_four. They are meant to track each if a video has been viewed completely. Only when all variables are toggled to 1, will the learner being returned to the main menu slide. The default value is 0 and will be set by a shared action (see later).

Events and actions

Enter event of video slides 1-2-3-4

This event is used to trigger an advanced action which will check the value of the 4 variables. If they have all the value 1, the learner will be navigated back to the menu slide. Have a look at  the Preview of this action:


Exit event of video slides 1-2-3

For the first three video slides this event is used to trigger a simple action, similar to this one for the first slide:

Assign v_one with 1

Only the variable is different for the second and third slide. Since the sequence is linear, after that event the playhead will continue to the next slide. There is no pausing point on the slide, which makes it possible to use this event.

Exit event of video slide 4

The action is now more complicated, because two situations are possible:
  1. All video slides are viewed (learner started with first video)
  2. Not all video slides are viewed (learner did not start with first video)

The first situation means that the learner will be navigated to the main menu slide, the second that he still has to view video 1 and maybe more. This means we need a conditional advanced action. Here is the screenshot:

Since the exit event has also to toggle the variable v_four, I used two decisions. The first one ‘Always’ is toggling that variable. The second decision is the conditional one described above.

Success event of the Video buttons (Chapter 1 slide)

You would expect them to trigger a simple ‘Jump to Slide’ action. However, since the learner will return to the menu slide, and can restart viewing Chapter 1, there is a need to reset the variables. This event was used for that purpose as well. It is a perfect example of an action where a shared action can save a lot of time, because it will have only one parameter: the slide to jump to. All variables, and the literal ‘0’ do not have to be parameters. Here is the screenshot of a filled in action for the first video button:

Since both remaining chapters will have a similar group of video slides, this approach can be used there as well, to reuse the same variables. The advanced actions described before, can be duplicated and edited. The shared action can be used as it is without any change.

Power of SVG Buttons

§Intro

In previous posts I have talked about the advantages and disadvantages of the 6 button types, and how you can edit the colors of SVG’s, even in states and when they are used as buttons. SVG’s, being vector images are excellent for use in projects to be viewed on multiple devices, whether it is a scalable non-responsive or a responsive project (fluid boxes or breakpoint views).

Unique about SVG’s used as buttons, is the fact that you have control over the clickable area, which is not the case for other  button types. In the example below you’ll see buttons which would have been impossible to realize with any other button type.

Example file

Watch this two-slide project. The Title slide is taken from the QSP ‘Legacy’ (non-responsive), but I have changed fonts (not fan of Arial). The second slide uses an edited master slide from that same QSP. Click the buttons in circular image in any sequence, and you can also reset the slide (used the Scenario 2 technique described in Replay Slide)

Setup Clickable Area

Six Buttons

The 6 buttons in the circular arrangement have overlapping bounding boxes. Have a look at this screenshot:


By unchecking the option ‘Enable Click in Bounding Box’ the clickable area will be limited to the space within the colored shapes, and those do not overlap. 

I kept only the Normal and Visited InBuilt states of the buttons . In the Visited state I added an icon (also SVG) from the Assets panel,  colored in the same color of the button (which was dimmed). That icon also covered up the number, which was part of the button SVG. Here is the Object state panel for button 6:

Reset Button

For this button I used an icon from the Assets panel. and added a text caption close to this button. The bounding box of the SVG is encreased so that the Reset text looks to be inside of the box. In this case The default option under the Style tab ‘Enable Click in Bounding Box’ remained checked. It now looks as if the learner can click both text and icon. I didn't use the padding option, which would make the icon smaller inside the bounding box.

Other Items

The information is stored in a multistate shape, where the Normal state is invisible (Alpha and Stroke set to 0). A two state shape is used for the final image, which is in a custom state of a circular shape. That circular shape also has an invisible Normal state. 

For the multistate objects the option ‘Retain State on Slide Revisit’ remains unchecked. Since the Reset button is re-entering the slide, all multistate objects will automatically revert to their Normal states.

Actions and variables were custom made, I didn’t use any of the click-reveal interactions from the QSP’s. Sorry about that, but I’m so used to create that type of interactivity that it comes almost naturally. One tracking variable for each buttons was needed to have the final image appear after all buttons have been clicked. 

Scrolling Text Interaction to replace Text Entry Box

Intro

Although I have already posted about one Submit button for multiple TEB’s, recently users tried to apply that blog to non-validated TEB’s, which was not the goal of that original post. Moreover giving another attempt to a TEB where the Submit has been done has become less easy with HTML5 output. SWF output had so many advantages (rewinding the playhead a couple of frames was simple), but that is the past.

Instead of writing long answers to the most recent thread, to explain why choosing Scrolling Text Interactions was a better choice for non-validated fields, I created a short example file. The workflow explanation will be in this article..

This example was created with version 11.5.0.476, the most recent version of Captivate. I uses some image and button assets from the new Assets panel. However, nothing has changed for interactions in this major update to version 11. I am confident that the solution will work for every version since 8, meant for HTML output.

Example

File has two slides. Only the first slide is relevant for the workflow, the second is meant to test the Continue button (with action "Go to Next Slide").

The first slide has three fields to fill.  If any field remains empty, a textual warning will appear and you can retry. The Continue button appears when all fields have an entry. Project has no poster image, just the default play button. It is not rescalable. Here is the link


Setup

Variables

For three fields you need 3+1=4 user variables, none of them needs a default value in its definition:
  • v_one, v_two and v_three will be used witl be associated with the Interactions
  • v_null is needed for the advanced conditional action to test if the field is blank; more info in ‘Where is Null’

Scrolling Text Interactions

Next to each Text container (used a shape) an instance of the Scrolling Text interaction. Here is a screenshot of the setup of the first of them. Important is to link one of the variables and to uncheck the option ‘Read only’:

You see in the dialog box that I edited the font (used an Adobe font), the font size and attribute.  Just a reminder: it is not sufficient to type in a variable name to define it, you need to define it in the Variables dialog box. 

Although I resized the interactions to the same height as the Text containers with the questions, the height is decreased in the output file. Be careful with copy/paste to duplicate an interaction, prefer the Duplicate functionality within Captivate (CTRL-D).

Advanced Action

This action is triggered by the Submit button. I used the On Enter event of the slide to hide the warning that will pop up if at least one field is empty. This is the Preview dialog box. The operator 'is equal to' is replaced by the JS equivalent needed '=='. The logical operator OR is replaced also by its JS equivalent |  As you perhaps know, an advanced action will be converted to JavaScript on Runtime.

The replacement of the grayscale image by the color image, disappearing items on the slide: all is achieved using  the timeline. For those interested, here is a screenshot of that timeline, I didn't group any items, but their label clearly shows what they are.

Conclusion

As usual I appreciate any comment, whether to add an alternative or to ask questions. You are welcome on my website as well.

Answer key for Survey

Intro

Once in a while a question like in this thread pops up:

“….students will need to answer short answer questions.  They will not be right or wrong, they will be their thoughts.  Is there a way to have all their answers compile into a final screen at the end?”

It seems logical to use short answer quiz slides, in Survey mode, for this use case. However I prefer to use one of the Learning Interactions, ‘Scolling Text’ for reasons I want to explain in this article, by describing both workflows with their specificities. It is up to you to decide which you’ll use. In both workflows variables will be important, hope you are familiar with them.

Short Answer quiz slides, Survey mode

Setup quiz slides

No right/wrong answer means that scoring has no sense, change the stqtus of the quiz slide to ‘Survey’. Nevertheless a score slide will be inserted but you can hide it easily.

Answers to quiz slides are stored in a reusable variable, cpQuizInfoAnswerChoice.After a short answer question the variable will contain the text typed in by the learner in the short answer field. Reusable means that the value will change after each short answer slide. Since we need to store each answer safely (for reusing on the slide at the end), you will need:

  • to create a user variable for each short answer question; I will label them v_First, v_Second, v_Third for the example you’ll see in the demo movie;
  • the default answer area is pretty small (one line), if you expect longer answers, make sure to increase the height of the answer area. It is not possible to edit the used master slide because it applies to multiple types of quiz slides;
  • the content of the system variable cpQuizInfoAnswerChoice is updated when the Submit button is clicked; it has to be transferred to the appropriate user variable, using the After Survey event; for that purpose I created a shared action with two commands:
    Assign v_First with cpQuizInfoAnswerChoice
    Go to Next Slide
    only parameter is the user variable (here v_First)
  • apply this shared action to each of the question slides, with the appropriate parameter.

Setup Answer Review slide

In the example movie I created one text container (shape or caption) and inserted the three user variables in it. Be careful to increase the number of characters to be shown when inserting the variables. You’ll also have to leave enough space for each variable. Of course you could create multiple text containers and/or have the answers distributed over multiple slides.

Using Scrolling Text interactions

A limitation of Short Answer quiz slide is that you can have only one answer per slide. When using a Scrolling Text interaction you can have several question on a slide as you can see in the example movie.

Setup interaction

Setup of the first answer box can be seen in this screenshot:

Two important items are indicated  in the screenshot:

  1. You have to type in the name of the variable to be used. There is no way to use a dropdown list. Beware: you have to create the variable, it is not created uatomatically.
  2. To allow text to be typed in by the user, the checkbox ‘ReadOnly’ has to be unchecked. By default it is checked.

It would have been possible to enter the question in the interaction, instead of having it in a separate text container. I preferred not to do it. Reason: if the user adds the answer, instead of overwriting the question, the variable will contain html tags, like <br>.

The Submit button, which you’ll see on the slide, triggers  the (default) action ‘Go to Next Slide’.

Since I reused the three user variables in this part of the example, I have created an advanced action triggered on Enter to empty the user variables with the technique described in this article.:

Setup Answer Review slide

Very easy: duplicate the slide with the interactions, and take out the On Enter action to reset the variables. The interactions are now populated with the given answers. Moreover the learner can still edit those answers, because of the option ‘ReadOnly’ being unchecked. If you don’t want it, check the option ‘ReadOnly’ on this duplicate slide.

It is also possible to use a similar slide for the first workflow with short answer quiz slides. That will be useful if you want indeed to allow editing the answers.

Example movie


D&D Feedback messages

Intro

Yesterday an interesting question appeared on the forum concerning Drag&Drop

The second question is answered in that thread, was about setting up the Accept for the drop target as I have already explained in previous blog posts. The first question however is at the base of this short article. I quote:

"Is it possible to show separate messages for cases such that the user not selecting the answer (Choose an answer msg) and selecting the wrong answer (Incorrect answer msg).  It currently shows 'Incorrect Answer' msg for both cases."

I asked for some details about the setup: 

  • Several drag sources, only one was correct
  • One drop target, based on my answer to the other question, it accepted all drag sources but only one by one. When dragging another source it would replace the first one.
  • Infinite Attempts

Drag&Drop confusions

Drag&Drop slide have some limitations such as: all drag sources and drop targets have to be on the slide from the first frame.  You can define it as a score slide or as a KC slide (see Drag&Drop Tips).  It has a lot of the behavior of a quiz slide, but it is not a full-blown quiz slide or KC side. Here are some points in its UI that I find really confusing and would love to see changed (logged feature requests about that since version 6):

  1. D&D slides are automatically pausing at 1.5secs but that is NOT visible on the Timeline, only in the Timing properties, whereas for quiz slides the pausing point is visible on the Timeline but NOT in the Timing Properties. This is confusing.
  2. D&D slides have an On Enter event and an On Exit event, whereas quiz slides only have an On Enter event. That is OK.
  3. Submit button both for D&D slides and for Quiz slides have one or two events, depending on the number of allowed attempts. For quiz slides, the actions triggered by those events will happen after the first step of the Submit process (where feedback messages appear), for D&D slides there is only one step in Submit process. That is OK, you just have to realize that.
  4. I talked about one or two events:
    1. If the number of attempts is limited you have two events: you allwasy have the Success event. That event and its linked action occur when the answer is validated and correct. That is fine, works the same for quiz and D&D slides. If you want to give the learner the time to read a Success message, which can appear automatically you have to leave some time to the learner by choosing the correct action On Success. Example: if you set the Success action to 'Go to Next Slide', learner will not be able to see a Success message. Change to 'Continue', and eventually increase the duration of the slide. Works fine, just that slight difference.
    2. If the number of attempts is limited, the second event is the Last Attempt event. That is indeed the indication in the Actions part of  the Quiz Properties.  The Failure message will always pop up with every Failure attempt, but the event that triggers an action only occurs when all attempts are exhausted. However in the Actions tab of a D&D slide it is wrongly labeled as Failure event. Many users  believe that the specified Failure action will occur for each Failure attempt which is NOT the case. This is confusing 
    3. If the number of attempts is unlimited you have only one event, the Success event. It is logical because you are supposed to try until you get the correct answer. For quiz/KC slides this is very clear because the Last Attempt event is dimmed when you choose for unlimited attempts. However for D&D slides the (alreadly wrongly labeled) Failure event is not dimmed, although it will never happend. This is very confusing IMO.

Sorry for this long explanation, needed to understand the workflow I explored to answer the question mentioned in the intro. I hope some of you, readers, will support my feature requests to 'repair' the UI and avoid confusion.

Workflow for  messages

User wanted to see a different message popping up:

  1. When the submit button is clicked but no drag action has been done
  2. When the submit button is clicked and the drag action was wrong

Both situations are considered Failures, but Failure doesn't generate an event until the last attempt. Since it is set to Unlimited Attempts, there will never be a Failure event. No way to replace the messages by custom text containers, if you cannot trigger advanced/shared  action on Failure.

The popup messages (Success, Failure) cannot be controlled, they don't have an ID.  You can create states for such a message, but since you cannot address the message, you cannot change the state by an action.

A possible solution is to replace the text in the Failure message by a variable, in this case I labeled it v_failure. It is possible to change the value of a variable. This is the screenshot in editing phaes of an example slide:

As default value on defining the variable I used the text to show when the learner has clicked the Submit button without doing any drag action:

The value of the variable has to change when at least one drag action has happened, which was not the correct action. Besides the events occurring after clicking the Submit button, D&D slides have also Object Actions. I will use those actions to assign another value to the variable v_failure. Open the dialog box in the Format tab for the selected drop target. In this very simple example, I used an Assign command as you see in this screenshot. I only needed it for the two wrong drag sources. For the correct source, no need to change the Failure message, since the Success message will appear. Since I used a simple action, needed to uncheck the box 'Continue Playing the Project'.

If you need to change a lot of those actions, and it is OK to have always the same Failure message, please create an advanced (oneline) action, will save you time when applying in the Object Actions. If you want a different feedback message for each wrong source, use either the Assign command (as above) or use a shared action.