Tip 4: Decisions (Advanced/Shared Actions)

Intro: Decision (tab)

The Advanced Actions dialog box in its default setup for a new action, shows  3 decisions with the generic names 'Untitled-1', 'Untitled-2' and 'Untitled-3'.It is possible to replace the generic names of course. In this screenshot they are marked by a red rounded rectangle. 

On top of the decisions to the left you see three buttons, which allow to Add decisions, Remove or Duplicate a decision.  There is no real limit to the number of decisions within one advanced/shared action. 

In the center above the decision names you find two buttons (blue rounded rectangle in screenshot above) which allow to change the sequence of the decisions by moving them to the right or to the left. That sequence is very important! First rule to remember when starting with Advanced/shared actions:

"All commands (actions) within an Advanced or Shared actions are always executed when the action is triggered. They are done always in the same sequence: top to bottom within a decision, left to right in the decision sequence."

Workflows which exist in most programming language to skip part of a long script do not exist. Forgetting about this first rule often leads to logical bugs!

Each decision can be converted into a conditional one by checking the option 'Conditional tab'. The word 'tab' is used there, but I largely prefer the original name 'decision' because Captivate has tabs in many locations, not only in the Advanced Actions dialog box. For a conditional decision, you have the choice between the classical 'IF-THEN-ELSE' which has two sets of commands (THEN, ELSE). One set be will chosen based on the result of the condition.
The WHILE condition leads to an infinite or finite loop. The set of commands will be executed after 1 second, based on the condition:
I would like to offer some tips now both to avoid problems and to streamline the choice of decisions taking into account the limitations mentioned before.

Tip 1: Combining standard and conditional decisions

This tip is based on my experiences with consultancy jobs and answering on the forums.

When starting to create advanced actions it often happens that too much commands are pushed into one conditional decision. I recommend to reflect: which of the commands (actions) have to be done independently of the condition? Those commands will appear in both  THEN and ELSE sections. In that case, take them out and put them in a separate non-conditional decision. 

Same recommendation when using multiple conditional decisions, if some commands appear in all of those conditions.

Example

This scenario appeared several times for debugging on the forums: 'Looping through a number of images  with their text, and showing a Next button after the first loop'.  The loop in this example is done with show/hide, not with a multistate object (which is easier however). Look at the original advanced action, meant for 3 images:

The second/third image and text are hidden in Output. The first image and text are visible. The result of this action is that the loop will not work, that each click on the button will always show the third image, while the counter will indeed loop and the Next button will appear as wanted. Reason is that the last conditional decision overrides the other decisions. Compare this with this solution:

In this action:

  • Texts and Images were grouped, to allow taking out the Hide actions from the conditional decisions.
  • A non-conditional decision was added before the conditional ones to hide the groups before the showing the text/image corresponding with a specific variable value. Moreover the (absolute) Assign command was replaced by Increment.
  • The conditional decisions show text, image. The last one needs also to show the Next button and reset the counter to its original value, which is 0. In that case you need Assign of course.


Tip 2: Multiple conditional decisions - make them mutually exclusive

When you have multiple conditions decisions in sequence (remember the sequence rule), avoid using the ELSE parts. You'll have less possible problems when using only the THEN part and write a conditional decision for each possible situation. If you use the THEN parts, there is a big chance that a later decision will overrule what has been done in the previous ones.

Eventually it is possible to use an ELSE part, but only for the last decision. You need to double-check if that THEN part will not mess up with previous decisions.

Example:

Using the same situation as for the first tip, there is no way to use the ELSE part of the decision 'Second' to replace the decision 'Third'.  The complete action would then look like this:

The result would be that the First decision would never be done, the second image/text never pops up and the Next button will appear after having viewed only the first and third image.


Tip 3: working with Tracking Variables

The first tip already showed how dangerous it is to change the value of a tracking variable within a conditional decision, if you have more than one of those decisions. In most cases it is safer to keep the value change in a non-conditional decision. You are probably aware of the three ways to attribute or change the value of a variable:

  • Assign: which I label as the 'absolute' way, and is valid for both strings and numerical values.
  • Increment/Decrement: often used when you also need a counter.
  • Toggle: typical for a Boolean variable, which is used for an On/Off situation. 

Here are two situations where you will need to have the variable value change within both parts of a conditional action (THEN and ELSE):

3.1 Toggle button action

Such an action will often have only one conditional decision and uses a Boolean variable for tracking. Have a look at this script, which will show/hide an object:

3.2 Non-eternal loop (WHILE)

Such a loop needs to have a way to stop looping. That is done with a tracking variable which needs to be changed within the actions which need repetition. Here is an example from a dice game. The dice number (random) is stored in a variable, and another variable stores the number of stairs which need to be climbed. The screenshots shows only the While decision of the action.




Tip 3: Show/Hide or Multistate object? (Advanced/Shared actions)

Intro

When talking about Advanced/Shared actions most developers think immediately about rather complicated scripts, with conditional branching. However the first reason to start using those actions replacing simple actions (from the dropdown list under the Actions tab) is that the commands have less restrictions when used in advanced/shared actions. Typical examples:
  • Show/Hide commands: when using those in a simple action you can only address objects residing on the same slide as the action. It doesn't matter which event you use as trigger: Success event of a button, On Enter event of the slide. That is not the case when using those commands IN an advanced/shared action.
  • State commands: are also restricted in a similar way. You can only point to multistate objects on the same slide. Another limitation which disappears when used IN advanced/shared actions.
  • Jump to slide command: when used as simple action it is impossible to point to the same slide as where the action is triggered. That is a show stopper when trying to Replay a slide. See the blog Replay/Reset Slide.

This blog will focus on the two first command groups. Although they are both used often for Click/Reveal actions, it is in a branching scenario, with a dashboard branching to chapters that the extended commands are especially useful.

Due to being able to access objects on other slides than the active slide, the dropdown lists can become very long. That is the reason why my first two tips were about Filtering and Labeling of course. 

In most courses the learner will be allowed to revisit slides. To allow that it is important to include that situation when setting up actions. 

Dashboard Setup

Situations

  1. The dashboard or menu slide has interactive objects - mostly buttons - branching to the different chapters in the course. 
  2. On the last slide of each chapter another interactive object will navigate back to the dashboard slide.
  3. The progress is made clear to the learner by adding an indicator to the dashboard slide for completed chapter. That indicator can be a checkmark, a different look to the chapter button, a progress bar... 
  4. Tracking full completion of the course is often required. After having taken all the chapters something will occur: a new button appears, navigation to a congratulations or recommendations slide,...

Show/Hide workflow

Add the checkmarks (or other objects) to the Dashboard slide, and hide them in output (eye button on Properties panel). Label them with a referenced to the chapter they belong to. I will use Check1, Check2, Check3....

Use these events and actions:

  • Buttons on the Dashboard slide (Success event) need a simple action 'Jump to....' pointing to the first slide of each chapter. Do NOT create a Visited state for those buttons, because such a state will appear immediately after the button has been clicked, not after finishing a chapter. This refers to situation 1.
  • Return button on the last slide of each chapter t(Success event). That will need an advanced or shared action with these commands:
       Assign v_1 with 1                                a Boolean user variable will be set to 1 to track completion of chapter (situation 4)
       
    Show Check1                                      to make the previously hidden checkmark visible (situation 3)
       
    Jump to Dashboard                             situation 2
    A similar action is needed for each return button. If you choose a shared action, the tracking variable (v_1), checkmark (Check1) and Dashboard slide will be the parameters.
  • On Enter event of the Dashboard slide will need a conditional action to complete situation 4:
       IF v_1 is equal to 1 AND
           v_2 is equal to 1 AND
           v_3 is equal to 1 ....
        DO.....                                               whatever you want to happen when all chapters are done at least once.
    This example is for a dashboard with 3 buttons/chapters. You can of course extend this for any amount of chapters.

This is the easiest setup, better than having a much more complicated script On Enter for the dashboard slide, which will check all chapters. I often see that still appearing during consultancy jobs.

If you want to allow resetting the dashboard slide (taking out checkmarks and toggling the tracking variables back to 0) during one  session, start by grouping the checkmarks in Gr_Checks. Use this action for the Reset button:
                 Hide Gr_Checks
                 Assign v_1 with 0
                 Assign v_2 with 0  
                 Assign v_3 with 0
                 Hide.....                      whatever you had popping up after course completion

Multistate object workflow

Add a custom state to each button on the dashboard slide, which includes the checkmark and eventually has a different style forr the button. Make sure to check the option 'Retain state on slide revisit'.

The same events are used as in the Show/Hide workflow. Even the same actions, except for the Return button on the last slide of each chapter:

  • Buttons on the Dashboard slide (Success event) same as in Show/Hide (situation 1).
  • Return button on the last slide of each chapter t(Success event). That will need an advanced or shared action with these commands:
       Assign v_1 with 1                                a Boolean user variable will be set to 1 to track completion of chapter (situation 4)
     
    Change state of Button1 to Done       to show the custom state (situation 3)
       
    Jump to Dashboard                            situation 2
    A similar action is needed for each return button. If you choose a shared action, the tracking variable (v_1), state (Done)/button (Button1) and Dashboard slide will be the parameters.
  • On Enter event of the Dashboard slide: same as for Show/Hide (situation 4)

If you need to reset the dashboard slide within the same session, the Reset button action will be bit longer:
                 Change state of Button1 to Normal
                 Change state of Button2 to Normal
                 Change state of Button3 to Normal
                 Assign v_1 with 0
                 Assign v_2 with 0 
                 Assign v_3 with 0
                 Hide.....                      whatever you had popping up after course completion


Next?

The choice of decisions, and its sequence are very important when creating advanced/shared actions. It will be the topic of the next tip.

Tip 2: Filtering (Advanced/Shared actions)

Intro

This second tip is closely related to the first tip about labeling. If you have read that post you'll have seen that good labeling could facilitate filtering for dropdown lists, using this screenshot. It shows the Parameters dialog box (Shared Actions) where filtering is used to limit the choices in a dropdown list.

Time to explain what I mean by the term 'Filtering'. Dropdown lists are all over Captivate's UI, not only in the Advanced/Shared actions domain. Some of those lists are sorted alphabetically, some are sorted chronologically (very annoying: most recent added item appears on top). They may show all items, but can have an automatic filter of items. That is the case within the Advanced Actions dialog box: when setting up a condition or a While loop, if you need to choose a variable, you'll only see variables in the dropdown list, for operators you only  operators. However, even when filtered and sorted alphabetically the lists can be very long and it takes time to find the proper item. Being able to reduce a list by manual filtering based on the names is a big timesaver! I remember older versions where searching was reduced to typing the first character, to scroll to the items starting with that character. That used to be the case for the variable dropdown list, reason why I started labeling user variables with v_ as first character, to differentiate from the system variables which started either with 'rd' or 'cp' (the first types disappeared from the lists).

Filtering workflow

It consists in typing a sequence of characters, resulting in displaying only items which have that sequence in their name. It doesn't matter where that sequence appears: at the start, at the end, in the middle. There is no case sensitivity, which is rather exceptional. Although names cannot start with a number, if you include a number in the name it will be very easy to use the number as part of the filter sequence. This will become easier to understand with some examples:

Show (Hide)

The dropdown list for those commands in advanced actions will show all objects on all slides, leading to a very long dropdown list. Using a filter and proper labels is very useful as you can see comparing these two screenshots of such an action before and after applying a filter. In this case the filter shows all groups, which are labeled as Gr_xxx

Change State

This screenshot (from the Memory game project) simplifies how to find the correct multistate object. In this case there were many multistate objects in the project:

Parameters

Although many dropdown lists are already filtered on the type of item needed, look at this example. You need to know that in the field here you need to click twice to be able to type in a filter: first click selects the field,  second click gets it in Edit mode (like with a text container). I added the Properties panel, because the label of the active button is used as reference for the 'active' button. Same example was shown at the start of this blog.

Availability of Filters

As you have seen the filters are available for all dropdown lists in:

  • Advanced Actions dialog box
  • Parameter dialog box

Too bad that it is not available for other dropdown lists:

  • Simple action (tab Actions)
  • Object actions (Drag&Drop)
  • Advanced actions list in the Advanced Actions dialog box (which would be very useful if you need to clean up)

Next tip?

It will compare the use of  Grouping (when using Show/Hide workflows) and multistate objects for similar goals.


Tip 1: Labeling (Advanced/Shared actions)

Intro

Many Captivate developers use advanced actions, which is an easy way to extend the functionality of the application without need for learning the rules of a programming language. After publishing the project, those actions are converted to JavaScript. This is also the case for the more flexible (underestimated) shared actions.

However the  ‘point-and-click’ approach for scripts has rules and limitations.  If you start using advanced/shared actions,  understanding those rules will avoid frustrating situations.  This first Tip is all about the importance of customizing labels, the reasons for establishing a labeling discipline (especially when working with a team). Last week two questions in the Adobe forums about issues with advanced actions were due to lack of knowledge about correct labeling.

The terminology used in this blog is the same as in the Adobe documentation. You can check the in-depth exploration of the Advanced Actions dialog box in one of my previous blogs meant also for starters with actions: 

Advanced Actions Outfit since CP2017 – eLearning (adobe.com.

This article will first explain Generic names (labels) attributed by Captivate, continue with Custom labeling. At the end you'll see also an explanation of 'Smart labeling', term used by Adobe when copy/paste is used on items with a custom name.

Generic names (labeling) - Uniqueness

Almost all items in Captivate get a generic name when they are created in a course: objects, placeholders, groups, slides, states, decisions (in actions)... There are a few exceptions:

  • User variables: you need to define a custom name except for the variable associated with a Text Entry Box.
  • Advanced/Shared actions: they also need a custom name 

The first global ruleis fully respected in those generic names. 

 'Each name needs to be unique'
Names are case sensitive, so it is easy to use similar names, by changing one or more characters to uppercase from lowercase. Uniqueness applies also to items from different type: do not use the name for a button, which has already been used for a variable (common mistake), or the name of an action for an advanced action (another common mistake). There are some minor exceptions:

  • Generic name for a Text Entry Box and its associated variable are the same. I don't really like this, and tend to create a new user variable with a custom name, using the X button next to the generic variable name:
    It is not wrong to keep the generic name, but it bumps on the general rule.

  • If you define the name of a button, and use the same name for the action to be triggered by the Success event, it will not be flagged as an error. But if you do the reverse (first action, later the button) you do get an error. I would avoid doing this. 

  • States can have the same name for multiple multistate objects, because as identifier the combination of the object name and the object will be unique if the object has a unique name.

  • Similar for decisions within an advanced/shared action. Although years ago I had issues with an advanced action using the same name as a decision in another advanced action. But decisions can have same name in multiple advanced actions.

When using Generic names, and duplicating the item, the duplicate will have a similar name but ending on another number. Check this screenshot, showing the timeline of a slide with multiple objects and of a duplicate slide:

Custom names (labeling)

Why and when is replacing generic names worthwhile, because it takes time?

  • It will be easier to understand, especially for your clients and collaborators. Referring to the screenshots of the Timeline posted above, if you replace the name of the TEB which will ask for a name by 'TEB_name', and the button is named 'Bt_Next' reading the timeline is more comfortable. Have a look at this Timeline, which is from the Stopwatch tutorial to understand better.
  • When using the items in advanced or shared actions, where you often will need to choose from dropdown lists, it is almost impossible to identify the right item for your choice when working in a project with tons of items.
  • To take advantage of the filtering (see Tip 2) provided by Captivate, custom names can save you lot of time. Look at this screenshot from the Memory Game tutorial where a parameter needs to be chosen for the shared action. There are lot of shape buttons in this game. By typing out one or two characters (here _2) the long list is filtered to facilitate the choice.

Setting up a custom labeling 'system' is also a timesaver, not only when you are collaborating with a team. The global rule of Uniqueness will have to be respected. Names cannot start with a number, nor have strange characters. Try to keep to short names, avoid spaces and remember that names are case sensitive! Here is a short summary of my personal labeling system, however this is just an example. Over a decade ago I started labeling for user variables. At that moment the only way to find a variable in the dropdown lists was by using the first character, because they were sorted alphabetically. To have the group of user variables separated from the system variables (which started with r or c at that moment) user variables started with v_. The first character indicating the type of item, followed by an underscore (replacing a space). This meant the item was also identified by that first character, and I continued to follow the same logic for other items. Some examples:

  • Bt_: first characters of buttons of the three old types (text, transparent, image)
  • SS_: smart shape
  • SB_: shape used as button
  • Im_: bitmap image
  • Ib_: bitmap image used as button
  • SV_: SVG image
  • SVB_: SVG used as button
  • Gr_: group both for object groups and slide groups (Table of Contents)
  • Tx_: text caption
  • CB_: click box
  • ...

For advanced actions I don't have a fixed system. One exception: if an action is meant to be used On Enter for a slide, I will start its name with Enter. I am a frequent user of shared actions whenever possible, which avoids the need for names for multiple duplicate advanced actions,  since you need only one name for a shared action that can be applied multiple times with different parameters. 

For the other characters in the name I will use camel notation. The system allows you to have the second part identical for items which are linked. Example: SVB_Reset can be linked with an advanced action ResetAct, and a variable v_reset.

Maybe I'll add an extra extension to multistate objects in the future, because they are not easily identifiable.

Tip: for much used variables create a shared action as explained in Rare tips (tip 1). By importing that action in a new project you avoid lot of typing.

Smart labeling

When you copy/paste an item with a custom name, the custom name will be preserved, but an extra number is added to the name. This is indicated as 'smart labeling', was introduced some versions ago. 

Example: Duplication of the Next shape button (from the Timeline screenshot for the Stopwatch slide), will lead to this:

The duplicate gets the original name followed by an underscore and a number. In this case the duplicate of SB_Next, became SB_Next_20. It means that the numbers 1-19 had already been used. Same would happen if you copy that button to another project, but the number will be different. If I copy this button to a almost empty new project, the name becomes SB_Next_2, because only one object already existed ending on 1. Keeping at least part of the custom name can be very useful. However it can also become a problem as I learned when importing Shared actions using the same variables. If you don't import (or drag) those actions in one workflow, but in steps, you will end up with duplicate variable bearing another name. You also need to be careful when copying interactive objects which are triggering actions using variables.

Conclusion

I hope this article convinced you of the importance of consistent labeling. Be sure I do not label every item, but I will when they will be needed in an advanced or a shared action. For slides the names do not need to be unique, because internally they are identified by cpInfoCurrentSlide which is a number. However slide names are important if you want to use a Table of Content.

Next tip about Filtering is closely linked to this first tip, and will save you time when developing advanced and shared actions. You will get an overview of the locations where filtering is possible, and those where - saddening - it is not available.

Quiz/Score slides in Quick Start Projects - part 2: Responsive projects

Intro

Recently I posted about using Quiz slides as ready-to-go slides from the available Quick Start projects, in their non-responsive version. The conclusion was not very positive, because most themes didn’t include the necessary master slides to allow you to create all types of quiz slides with the theme look/design. For the Score slides the situation is even worse, because they cannot be inserted as ready-to-go slide, they will appear automatically after insertion of a quiz slide, or after setting up the Quiz Preferences to show a score slide (for scored objects). If the Results master slide has not been created in a theme (as was the case for multiple QSPs) you’ll not be able to get them in your project, unless by using the long workaround I explained in that post.

This second part refers to the responsive versions of the Quick Start Projects. It is a relief to see that the situation is better for the used themes. You will be able to download a table, with the same indications as in the first post.

Table

The number of Quick Start Project with a responsive (fluid boxes) set up is more limited than for the non-responsive projects. You can find a similar overview like the one provided for the non-responsive projects in this downloadable table:

QuizQSPResp

Items marked in red need some explanation, have a look at the Tips below

TIPS

Similar to the non-responsive projects, there are QSPs (Quick Start Project) with a fully developed theme, including dedicated master slides for the score slide and the quiz slides. That group includes the projects Safety, Wellbeing and Alliance. A second group (Earth, Rhapsody and Wired) has master slides but only partially similar to the example slides. Mostly images are lacking, but since you are dealing now with Fluid Boxes, it will need some knowledge of that workflow to reproduce the look of the quiz and score slides.

The project Aspire  has several example MCQ slides, only one of them is using a dedicated master slide. It has also an incomplete Results master slide. The project League has incomplete quiz master slides.

The situation for the score slide is different. As told before, you cannot insert a score slide as a standalone slide. It will be inserted automatically after you have inserted a question slide of the same theme, or when you select the option ‘Show score at the end of the Quiz’ in Quiz Preferences, Settings.

The tips for the question slides, mentioned in the previous post, are valid here as well. For that reason, focus in the TIPS is only on the Results (score) slide. If you want to learn more about the Fluid Boxes layout for question slides, and about editing the feedback messages, have a look at:

Tips for Fluid Boxes quiz slides

Feedback Messages in Fluid Boxes question slides

Score slide

Three groups of Quick Start Projects, each with a different approach.

Group 1: Safety, Wellbeing, Alliance

These projects have a Results master slide consistent with the global Theme design. The content (inserted fields) is similar to Results slides in all themes packaged with Captivate. That means that you can use choose the to be inserted fields, using Quiz Preferences,  Settings, button ‘Quiz result messages. The screenshot below shows an example, where two fields (Max. Score and Attempts) have been unchecked. The Fluid boxes layout will adapt to those changes.

No problems with this group at all. When you insert any question slide from one of these QSPs the results slide will automatically be inserted and have the design of the master slide of that same QSP.

If you insert a question slide directly (using Quiz menu) the theme of the project will have priority and the project Results master slide will be used. This is due to the fact that version 11.5 supports the use of multiple themes.

Group 2: Aspire and Rhapsody

Those projects have two Results slides. This screenshot shows them for Aspire:

The first master slide (Result) is the default master slide used when the Results slide is inserted (due to insertion of a question slide). It has only partially adapted the Theme design.

The second master slide (Custom Result) is used in the Alliance project for the example results slide.  You can switch the existing Results slide to this master slide if you want. BUT! the big problem is that you’ll miss the Advanced action used for this results slide, and the text content for some text captions.  This is a big problem if you are not familiar with those features.

Group 3: Wired, Earth and League

These projects have no Normal Result master slide. By Normal I mean that you can add/delete fields as shown in the screenshot ‘Quiz Result Messages’ under Group 1. These projects have only a customized Result slide, which is using an advanced action.

This is a problem: when you insert a question slide from one of these projects, the companion Results slide will be that custom slide. That means that you will have to find the advanced action and attach it, after having filled in the missing information.

Two possible solutions: either you will replace the custom Results slide by the default Results slide from the project theme. These two screenshots may illustrate the workflow. It is a project using the ‘Cement and Steel’ theme packaged with Captivate.  A T/F question slide was inserted from the QSP ‘Earth’, which resulted also in the Results slide of ‘Earth’, and you can see the result here (missing Text, advanced action). You see the results slide at the back (with part of the missing fields in the scratch area), the Filmstrip and the Properties panel of the results slide. You see that the Results slide belongs to the ‘Earth’ theme:

To replace the Results slide by the one belonging to the theme ‘Cement and Steel’, use the dropdown list (showing Earth) to switch, and you’ll get only one possible master slide: the Results Master slide of ‘Cement and Steel.’ Select that master slide, and you’ll get all the fields back, no advanced action needed, although the design may need some editing.

Post a comment, if you want to learn how to recover the advanced actions for the custom results slides in groups 2 and 3.

Quiz/Score slides in Quick Start Projects - part 1: Non-responsive projects

Intro

I already published blogs to help you using and editing content slides from the Quick Start projects which you find under the Assets. Those individual slides are also indicated as ‘Ready-to-go Slides’.  The first blog was about the static objects, second one treated the interactions:

Editing Ready-to-go slides (Quick Start Projects) - part 1: Text and Images

Editing Ready-to-go slides (Quick Start Projects) - part 2: interactions

In the forum a question was posted about customizing Quiz and Score slides in Quick Start Projects.  You can consider this post as a third part, because those particular slides are tricky compared with normal content slides. If you know the ins and outs of quiz slides, you can skip the next part and go immediately to the Practical tips. Since the Quick Start Projects are coming in two flavors: responsive (fluid boxes) and non-responsive, this blog will focus on the non-responsive ones, the next blog on the responsive projects.

Quiz Refresher – Overview table

Quiz and Score slides are always based on dedicated Master slides, which are compulsory in each Theme: 4 master slides for questions and one for the Results slide. Those master slides have a lot of embedded object with inbuilt functionality. An embedded object has no individual timeline, and should not be deleted if there is no way to uncheck its presence on the slide.

Those master slides are also used for Knowledge Check slides and for Pretest slides. You cannot convert a slide created as one of the three types to another type. That is the reason you’ll find in the QSPs both Knowledge Check and normal Quiz slides.

The Results or Score slide will appear automatically when you insert a question slide, but you may also choose to create a score slide when you have only scored objects using the Quiz Preferences. It is impossible to delete a score slide, it can only be hidden. Reason: it is still providing functionality even when it is hidden. This blog post can clarify what I mean.

Tables

You can download this table identifying the Score, Quiz and Knowledge Check slides in the QSPs available at this moment (May 2021).  In the table you’ll see the slide number of the slides, type of question and whether they have a dedicated master slide (which should be the case in a custom theme). The score slide and its possible master slide is mentioned separately (see first Tip).

QuizQSPNonResp  is the table for non-responsive Quick Start Projects. Red-colored items can cause problems.

Tips

Score slide

It is NOT possible to insert a results (score) slide from any QSP in a custom project at all.  This may come as a disappointment. They are dimmed in the Assets panel. If you want them as standalone slide in your project this is the only possible workflow:
  • Open the QSP as a project.
  • Delete all slides you don’t want to use; even if you delete all quiz slides in the QSP, the results slide will still remain. Of course the inserted fields (system variables) will only get a value if you have at least one scored object or question slide.
  • Add your slides to the project. If you have quiz slides or slides with scored objects which are set to include in the total score, the results slide will get the values of the uses quizzing system variables on runtime.

You don’t like this (neither do I)? If the QSP of your choice has a complete custom theme you are lucky: the results slide has been edited and will be used once you add the first quiz slide from this QSP. On adding a quiz slide, the results slide will be added automatically and will use the results master slide of that theme. Bad news: only a limites group QSPs are in that situation, Safety and Wellbeing. The QSPs League and Earth have a master slide which is partially customizedand you can easily make it look like the one in the Assets panel. But the other themes fail for score slide design.

There may be another issue with a custom score slide, if you want to add more system variables. I will explain that more in detail in the second part (responsive projects), because it is even more important for Fluid Boxes projects.

Quiz slides

Inserting a quiz slide as ready-to-go slide is possible, if the type you want is available. All the QSPs in the table have slides for Multiple Choice questions. Sometimes you’ll find both MCQ with one correct answer, and MCQ with multiple correct answers but changing from one to multiple correct answers can be done easily.  Some projects also have a True/False question. Three QSPs (Safety/Wellbeing/Alliance) also have a Matching slide.

Why is this important to know?  Reason is the same as for the Score slide: if the theme has master slides used to create the example slides this is not important. Once you have the master slides of the QSPs you can add quiz slides from the quiz menu, they will get the look which you expect, similar to the downloaded quiz slide. That is even true for other types of questions. The two excellent QSPs for that feature: ‘Safety’ and ‘Wellbeing’ are in that situation. They have designed three out of the 4 quizzing master slides: “MCQ:T/F,…  “, “Matching” and “Hotspot”. Only the Likert type (getting deprecated since unusable in responsive projects) is missing.

For those two QSPs, once you have the theme (which is the case when you have one imported slide) you can safely add Quiz slides of all types. They will get the expected look, same as the score slide.

However that is not the case for the other QSPs. The QSPs “Earth” and “League” has some editing to the quizzing master slide, but the top image (normally visible in the Ready-to-go quiz slides) is not there, can easily be edited.  For the other QSPs you can only use the quiz types offered in the project, but not add any other question types because the master slides are not available. It is possible to duplicate quiz slides, but you will not be able to add a (True/False for some), Matching, Sequence nor a Hotspot quiz slide having the same look. Look at this last screenshot, showing the master slides from the QSP “Wired” which normally has dark blue backgrounds. Not only the backgrounds are missing, but even the object styles are different from  those shown on the example quiz slides:

You will be able to edit some features after insertion of a Ready-to-go question slide: feedback messages, score, penalty, shuffling, switching from one to multiple correct answers for a MCQ, actions and when available Advanced answer feature.

Summary – conclusion

What are the possibilities if you want to use a quiz, Knowledge Check, Score slide from one of the Quick Start projects? Look at the table I provided above and you’ll see that there are two groups of Quick Start projects, based on the availability of master slides reflecting the ready-to-go slides:

Group 1: ‘Safety’, ‘Wellbeing’ and – with some restrictions - ‘League’ and ‘Alliance’

I would first recommend for ‘League’ to add the images (which you can easily find in the Library using the right-click menu) to the quizzing master slides.

  • You want an available question slide: no problem, you can even insert them directly from the Quiz menu, because the master slide has all the design of the question slides.
  • You want question slide which is not available: with the exception of ‘Likert’ use the Quiz menu to insert the question slide, it will have the look of the available question types in the QSP.
  • You want a score slide: you cannot insert the available score slide as an individual slide. However if you have at least one question slide, the automatically inserted Score slide will have the design of its dedicated master slide.

Group 2

All the other QSPs are in this group.  Repeating the same choices:

  • You want an available question slide: insert them as individual slides from the QSP. You can duplicate the question slide (for a scored slide check the Interaction ID, but normally it will be changed) to have more slides of that type.
  • You want question slide which is not available: that is a problem since you don’t have edited master slides. Some workarounds are possible: you can use a MCQ slide to mimick a T/F slide. However that is not possible with Sequence, Fill-in-the-Blank, Matching (if it is not available).
  • You want a score slide: impossible unless you use the full project workaround described before. You will get a score slide, but it will use the master slide of the project itself, which will for sure not have the look you expect.


Memory game setup - version 2021

Intro

As new year's blog I offered a simple memory game in this portal

Let 's Play and Dream

The setup however is not explained in the blog. Since another user asked about the creation of such a memory game, this blog will explain shortly the workflow. It will be limited to the game itself, not to the consequences of having succeeded it.

Setup slide

Besides the use of ONE shared action and ONE advanced reset action, all is based on using multistate objects, groups and variables. It can easily be extended to more than 6 pairs as in the example file. The background image, which in this case is only a static image of all the small images, can be replaced by another image (or a random image if you use JS), which can be included in the game itself. To see what I mean, I have to refer to my first version of this game, 10 years ago: 

Concentration game created exclusively with Captivate

If you want to play that old game, I warn that it is a SWF.

Timeline

Have a look at the timeline of the game slide

The two buttons with the same back image are in a group. There are 12 buttons, so you end up with 6 groups. The buttons themselves indicate where they are. The expanded group Gr_6 has the second button on the third row and the fourth button on the second row.  However you can set up labels as you want.

Each button is a multistate object. Normal state is the symbol for the virus, the Back state has the image. 

Variables

Each group has a tracking variable: v_1 - v_6. Their default value is 0.

The variable v_click starts with a default value of 0. It will track the button clicks (first or second).

The variable v_counter will track the number of correct paired images. It starts at 0, and the game is finished when reaching 6.

The variable v_first is needed to reset the slide, will store the frame number of the first slide frame. For more information check: Replay or Reset?

Shared action 'ButtonAct'

This action is triggered by the 12 buttons, and has only 3 parameters as you can see in the preview of the action:

You see 4 decisions:

Always  is a standard action, it shows the back state of the clicked button and disables it. The tracking variable for the group and v_click are both incremented by 1.

WrongAct (conditional) checks if this is a second click, and it didn't match the first click (because v_1 is equal to 1). In that case the Reset workflow is used. The advanced action 'EnterGame' (see below) will reset what is necessary.

CorrectAct (conditional) if both clicks pointed to the same image, the variable v_counter is incremented. The group with the two buttons will be hidden, to reveal the background image. 

Done: (conditional) checks the value of the variable v_counter and navigates to the conclusion slide if it reaches the value 6, which means the game has been completed successfully.

Advanced action EnterGame

This action is essentially resetting the slide. 

 Since buttons can have been disabled (see ButtonAct) all buttons need to be enabled. A group tracking variable can have a value 1, needs to be reset to 0. The variable v_click needs to be reset to 0 as well. The only variable keeping its value is v_counter.

Extension tips?

More possibilities will not need a lot of work. If you want to reuse the workflow in more projects a shared action has a lot of advantages.  If you import that action in a new project, the variables v_counter, v_first and v_click will be created automatically including their default value and description. Personally I would use the present advanced action ‘EnterGame’ to create a new shared action, keeping only the variables to reset, not the buttons. If you import that new shared actions at the same time as the first shared action, you don’t have to create the group tracking variables neither. You only have to set up the multistate objects and the groups in the slide.

Want less or more groups? 

It is logical that you’ll need to edit the EnterGame action. What about the Shared action ButtonAct?  Since I wanted to make the workflow simple, I kept the literal ‘6’ for the number of groups. Two possibilities for editing:

Use the Shared action to create an advanced action. Delete the shared action in the Library. Edit the literal to the wanted number, and recreate the shared action. You can even use the same original name.

If you want to reuse this action in multiple projects, replace the literal by a variable (v_max) which you can edit in the variables dialog, or by adding an Assign command on a slide preceding the game slide. 

Background image can be replaced, as I mentioned above.

It is also possible to create a more complicated game, maybe with groups of 3 buttons to match. 

Have fun!

Custom review text for Random questions.

Intro

Another Quiz tweak blog, answering a question in the Adobe forums found under this ‘link‘.

None of my previous blogs about tweaking quiz slides (like Custom feedback) or using Random question slides (Do’s and Don’ts) could answer this question directly. But the workflow below did use some of the ideas of older blog posts, and addressing the limitations of random questions.

Goal: show a custom review message for random question slides. Follow this step-by-step workflow. Of course I used a shared action since it is a repetitive process. You’ll see a short example project.

Example project

Watch this quiz, either the embedded version (fixed resolution) or a rescalable version using this link. This short project has 3 random slides which will be selected from a question pool with 8 question slides. There is a score slide at the end, where you can click the Review button. There is no slide after the score slide, which means the Continue button has only the functionality to pause the score slide.



Problems to be solved

Three limitations/problems need to be addressed by the workaround:
  1. In the default Review design of Captivate the Review area is only used for questions which have not been answered.  The default messages which you can still define under  Quiz Preferences, Settings, button ‘Question Review messages’ do not appear anymore since the design with checkmarks has been introduced. You will need to create custom text messages.

  2. Although you can add custom objects to question pool slides, you cannot address those objects using an action.  It is possible to use an Advanced or Shared action for the On Enter event, but you cannot hide/show custom objects.

  3. A random question cannot have any triggered action in a Captivate project.

My first conclusion:  the custom text container cannot be in the question pool slides nor in the random question slide. It needs to be outside of them. But the message itself needs to be different for each quiz slide, somehow it needs to be attached to each question in the pool.

Workaround summary:

  • Text container will be a shape, timed for the rest of the project. It needs to be on a normal content slide immediately before the first random question slide. That ‘dummy’ slide can be very short (I used 0.1 secs) and even set to fade so that it will barely be visible to the learner. The shape will be the custom text container and it is outside of the question slides. This workflow has an extra advantage: it will be on top of the embedded objects of the quiz slides if you activate 'Place object on top' in its Timing Properties.

  • The shape is not filled with a text feedback message but with a user variable set up to show sufficient characters (I used 250). Text style and size of the shape are edited so that those characters can be displayed.

  • The value of the variable (feedback) is assigned with a Shared action On Enter for each quiz slide in the question pool(s). 

Step-by-step workflow

Step 1 (question pool): in scratch area

Use the scratch area for each quiz slide to add the feedback message.  By using copy/paste the text to fill in a parameter in the shared action. That is a lot more comfortable than having to type the (long) text in the small parameter field. Here is a screenshot of one pool question slide:

Step 2: import the Shared action

You can download the Shared action here:

https://shared-assets.adobe.com/link/f63df322-5037-479a-42b8-86506a7f1b7e

Import this shared action to your project library. If you have already created a library to be used as external library in any project, add it to that library as well. I will explain the action functionality later. Importing this action in this early step,  results automatically in the creation of the user variable v_review which you’ll need in the next step.

Step 3: create dummy slide

Create a short slide immediately before the first random slide. On that slide you insert a shape (labeled Tx_Review). Time it for the rest of the project. in Timing Properties.

Go into Text Edit mode (F2 or double-click) and use the X button in the Character part to insert the user variable v_review. Be sure to increase the default duration. I used 250 characters which was sufficient for the feedback messages created under step 1. Here is a screenshot of that slide and its Timeline. You see the double arrow at the end of Tx_Review timeline, indicating it is timed for the rest of the project, and the very short duration.

Because you don’t want to show the text container Tx_Review from the start, use the On Enter event of this dummy slide to ‘Hide Tx_Review’.

Step 4: Shared action On Enter in Question pool

On each slide In the question pool add the Shared action (downloaded in step 2) to the On Enter slide event.  This is the preview of this action, with indication of the two parameters:

The functionality is self-explanatory. In the first decision 'Always' the variable v_review gets the feedback text (first parameter). Use copy/paste from the message in the scratch area (step 1) to define this parameter. The second parameter is always Tx_Review.  

Step 5: Hide Tx_Review

you don't need the text container, timed for the rest of the project, on the following score slide and/or content slides.You’ll need to hide Tx_Review similar to the dummy slide (step 3). In the example project that was done on the Score slide.

Step 6: testing!

Use only F11, Preview HTML in Browser, and preferably test in multiple browsers.

Fluid Boxes and Interactive Video? (Position Properties panel)

Intro

With CP2019 the Position Properties panel, originally used only in Breakpoint Views workflow, can also be used for a Fluid Boxes project. From recent questions on the forum I detected that this can lead to confusion, especially for starting users. Some use only the Position Properties panel to create slides and ignore the Fluid Boxes setup.  That was not the goal of adding access to this panel. 

If you choose to set up a responsive project with Fluid Boxes workflow, it is compulsory that you leave the layout to be monitored by Fluid Boxes control as primary. Only for specific situations Fluid Boxes should be overridden by using Position properties. It is similar to the use of Static fluid boxes: their use should also be limited as much as possible or you lose most of the fluidity which is typical for Fluid Boxes.  Besides object stacking, one of the excluded items in a normal fluid box is Interactive video. This blog tries to explain best practice for such a slide, which will not have any fluid boxes. 

Position Properties panel can also be used for objects which are unlocked from any fluid box. 

Interactive video slide

It is not compulsory to have fluid boxes on each slide. Be careful: if you use a packaged tresponsive heme, it is possible that the theme provides fluid boxes on the master slide(s). Same is valid when you use slides and theme from one of the Quick Start Projects.  The savior in this case in any correct Captivate theme is the Blank master slide. It shouldn never have fluid boxes. 

Recommendation: use the Blank master slide to insert an interactive video. That is the case for the example screenshots. The video was taken by night, hence very dark. For that reason I changed the background color of the Blank master slide to black instead of the default white. That way it could blend more easily with the video if it is not filling the slide (setup 1). This has consequences for the overlay slides as you'll see later.

In a normal fluid box you cannot have slide video.  Similar to bitmap images it is very important that the width/height ratio is maintained whatever the browser resolution on the device. That is where Position Properties are important. Two possible setups, to have the video adapting to any browser resolutions will be described.. 

The images are for a video in 4:3 format. The desktop resolution is 1024x627 as you can see in this screenshot. The width of the video is 1024, which means that part of the height (765) is outside. 

I turned on the feature ‘Preview Height’ under the Style tab, which results in the yellow surrounding box and the indication of the device size.  When the resolution changes, there are two ways to keep an acceptable view, while not distorting the video. The setup is realized using the Position Properties panel. If you don't see that panel, turn it on using the Window menu.

Setup 1: Width = 100%, Height = Auto

This will result in having the video  always completely visible. The following screenshot shows the iPad situation. Due to the black background the empty slide pixels blend in well with the video. Next to the result you’ll see the Position Panel setup, with Advanced part expanded. Vertical and horizontal alignment are turned on, reason why the % for Left, Right, Top and Bottom are greyed out

Setup 2: Width = Auto, Height = 100%

This will result in cropping the video as you can see in the setup and the screenshot of the same iPad situation as in the first setup:

The choice between both setups  depends on the video and whether you need to preserve it to be fully visible or not. For the second setup, if you want to keep another part than the central part, you can add specific setting for the X and Y position of the video, instead of using the center horizontally option.

How do you treat the overlay slides? They need to be created individually, should you use a master slide with or without fluid boxes? Read on.

Content overlay slides

After a lot of exploration, I detected that you get the best result when creating Overlay slides without using Fluid Boxes as well. For the layout, use a similar approach as you used for the video with the Position Properties.  Using Fluid boxes could mess up the slides when they appear in the interactive video. Here is a screenshot of such an overlay slide, when using Setup 1 (Width set to 100%):

It has been set up without vertical alignment in this case. As you may know, the black background (because the video is on a black background) will become transparent when the overlay slide appears to allow the dimmed video to be visible (more about this in an older post).

This screenshots shows the same overlay slide for setup 2:

Knowledge Check  Overlay slides

The situation is different now. This is a Fluid boxes project, so it is impossible to create those KC slides without using the responsive masters for quiz slides.  I tested this out in the same short (dirty) example project and everything works as expected. Just a warning: do NOT use a playbar, because it causes a lot of flickering when a Knowledge Check slide appears.  If you want navigation possibilities for the overlay slides (when you want a sequence of slides) create custom navigation. 

Similar use cases

Background images for slides or master slides can be treated the same way. 

Position properties panel can also be useful when taking out objects from a fluid box, to attach it to the one of the slide edges, or to another item. A company logo is a typical example. 

Those use cases have been treated in many videos, but I never found one about the workflow for an interactive video. since you have to deal with the overlay slides as well, suspected this could be a useful blog.

Using SVGs instead of bitmap images in or out of fluid boxes in a responsive project can lead to weird situations. Stuff for another blog.

The example project is not provided. If you want to play with it, contact me by mail or through my website. It is just a trial and error project, not an example of a nice interactive video.

Tips for troubleshooting

Intro

Quite a while ago i created this blog post, explaining how to restore some customisation after having cleared the Preferences:
Keep your Customisation!

That blog is still fully valid for the most recent versions. This one offers some additional tips which still seem to be unknown to many. I deducted this from my daily visits to the Adobe forum and the eLearning community. Often you see these recommendations, to solve a possible corruption:

  • Clear the cache, but be careful because the cache of a recent project can be used as backup
  • Clean the Preferences

I will not repeat how to do both – you’ll find that easily –  but want to offer some less-known tips. Even though some of those tips are over a decade old (will refer to the original authors).

Cache

You don’t need admin rights on Captivate for cleaning the cache. The cache folder is used to speed up the opening of existing projects and should be on your system, never on a networked drive. It can grow very quickly, if you are short on disk space take the time to clear it regularly.

Clearing the complete Cache is easy: use the button ‘Clear cache’ in Preferences, General settings. But:

  • If you do this from the Welcome screen, all cache folders will be deleted.
  • If you do it when one or more projects are opened, the cache folders of the opened projects will not be deleted.

That could be a way to preserve those caches for eventual backups.

However it is less known that the team provided an AIR application (in 2010) to delete selectively cache folders, based on the name of the projects (instead of the cryptic generic names used in the cache folder). The blog announcing this app is still available, the app is labeled ‘dCache‘ and can still be downloaded:

New utility for deleting Adobe Captivate project cache folders – eLearning

Yesterday a user asked if it would still be functional after the demise of Flash Player. This is due to a common confusion between the authoring tool Flash Builder (now renamed to Animate) and the Flash player needed to play SWF output. AIR application can be built with Animate and do not need the Flash Player. I double-checked it with version 11.5, all works as expected. Look at its UI.

The cache folders of all the projects since previous clearing are shown. The one which is dimmed (blue rectangle) means that it is open in Captivate. I have checked two caches (red rectangle) which I can now clear using the Clear button. It is very simple, but avoids having to search for the folder linked with a project.

Preferences

To clean the Preferences you need admin rights for Captivate. You find two clean options under the ‘utils’ subfolder in Captivate’s installation folder. Run the file appropriate for your OS.

Doing that you are deleting a folder in your profile.  I am on Windows and that folder is under AppDataLocalAdobe and it is named ‘Captivate 11.5’ (for the most recent release). When deleting that folder (can also be done manually) Captivate needs to be closed. A fresh copy of the folder will be restored when you restart Captivate. Do not import the previous Preferences, because they may have been corrupted, reason why you cleaned them.

Problem with deleting that folder is that you lose some customization, because they are stored in that folder. Have a look at the structure of the folder ‘Captivate 11.5’ in my profile:

I have marked the most important subfolders with customized items:

  • objects: will store saved custom shapes
  • PhotoshopTextEffects:  custom Text Effects
  • Themes: I never use a custom theme in this folder, but maybe you did.
  • Workspace: custom workspaces if you are working in the Expert UI. The default UI is the Newbie UI (has big buttons for Library and Properties next to the Assets button).

If you want to keep some custom items, make a backup before cleaning the Preferences. You can move the backup back to the subfolders (in AppData) after cleaning. Personally I always keep the workspaces stored somewhere if I need to reset them because Preferences needed cleaning. It saves time. I always store the custom Themes with the projects, not in the subfolder of the Preferences.

What cannot be restored is the choice for the Expert UI. You will have to repeat that workflow, by activating the option ‘Enable custom workspaces….’ under Preferences, General Settings.