If you already understand about Adobe Captivate user variables, run-time events, and how to use these events to execute Single Actions, it’s time to begin looking at more powerful tools that are capable of executing multiple actions from a single event. Single actions in Captivate can achieve quite a lot. But when you need to execute more than one action from a single event, you must use either a Standard action or a Conditional action.
This chapter discusses Standard actions and how they allow you to set up interactive components that can potentially be re-used in any slide of your project.
Creating a standard action
To create standard actions (and conditional actions too):
- From the Project menu select Advanced Actions, or hit SHIFT + F9 keys.
This opens the Advanced Actions dialog and all versions of Captivate 5 onward use it with only minor changes. (The dialog below is from Captivate 7.0.1 which has an extra drop-down menu for Create from: because it’s now possible to create actions from Shared Actions as well.)
When you first open the Advanced Actions dialog the Action Name field is always empty and the Action Type field is set to Standard actions, so that’s what we’ll be creating by default.
- In the Action Name: field type an appropriately descriptive name that will help inform future developers (including yourself) that may need to maintain this course. Note that your names cannot contain spaces (Captivate will prevent this). But unless you want to crash Captivate, you should also avoid using any of the 100 or more reserved keywords. As mentioned in this article about variable names, I tend to favour CamelCase naming.
NOTE: Action names are not sorted alphabetically
One of the many shortcomings of Captivate’s current Advanced Actions dialog is that for some reason the Adobe developers decided not to code the Existing Actions list to sort alphabetically, as they sensibly did with the list of variables in the Variables dialog. Believe it or not, the actions appear listed in the order in which they were created. This is a huge pain in the proverbial for e-learning developers because it makes locating actions in a complex project an unnecessarily tedious task. Rest assured this oversight was pointed out to Adobe and was finally fixed in the Captivate 7.0.1 update patch.
- Next, on lines in the Actions table, you can specify what you want to happen when this standard action is executed by a run-time event. In the example shown above I’ve chosen to Assign the value of a variable called MyVariable with a value of 1.
- Once you have created your action, click the Save As Action button at the bottom of the dialog. (In Captivate 7 you also have the option to Save As Shared Action, but we’ll deal with that one in the article about Using Shared Actions.)
When you successfully save your new standard action you’ll see the message at left below.
If you make further edits to the action, click the Update Action button, and you’ll see the confirmation message shown at right above.
- The Advanced Actions dialog is a modal dialog, which means you cannot interact with other parts of Captivate while it remains open. So after making any final changes to your action, click the Close button to return to editing your project.
- All that remains now is to set up which event (or events) will execute your new standard action. For example, if I wanted to change the value of my variable when a button was clicked, I could set it up as shown below.
A useful difference between standard actions and single actions
Aside from the ability to execute multiple actions from a single event, the standard action type also has another very useful trick up its sleeve. In fact this trick can be so useful it may be worth the extra time to create a standard action, even if it would be quicker to set up to execute a single action.
What I’m referring to here is the fact that, if your timeline happens to be paused when you use the single action type to do something, Captivate then releases the timeline so that it continues playing. However, if you were to perform the same task by using the run-time event to execute a standard action, then the timeline remains paused.
Why is this useful? Well there are times when you may want the learner to do something multiple times without advancing the timeline. And in that circumstance a standard (or conditional) action is better than a single one.
Example: Toggle buttons
Let’s clarify this by looking at a scenario. Say you wanted to create a toggle effect using one button to show and image and another one to hide it. You want your user to do this as many times as they want before progressing to the next slide. So you want the timeline to remain paused while the learner plays with the buttons and then have them click the playbar or another button to continue on to the next slide.
About the interactive pause point
There’s a side issue here you need to be aware of. Many Captivate authors are aware that interactive objects have a pause point indicated by a faint vertical line on their timeline. But they do not realize these objects are only active before they pass their pause point, and are inactive at any point beyond the pause point.
Single actions un-pause the timeline
If you were to execute single actions to try and achieve this, then you’d find when your learner clicked the button, the playhead would continue and your button would stop working because the timeline would have moved beyond the button’s pause point into the inactive portion of its duration (as shown above). So even if the button is still visible on the screen, it’s now disabled and further clicks by the learner achieve nothing.
Standard actions leave the timeline paused
If you were to create the same interaction using two standard actions (one for the SHOW button and another for the HIDE button), then you would find the playhead remained firmly paused as your user clicked away on the buttons to their heart’s content. The ramifications of this seemingly insignificant difference are huge.
If you want to see this effect in action, take a look at this YouTube video by Captivate expert Lilybiri: http://www.youtube.com/watch?v=M3nKi-DB6Fw
CONFESSION: I always use conditional actions anyway
In the interests of full disclosure, let me say at this point that my personal preference as an e-learning designer with many years of Captivate experience is to always use conditional actions instead of standard actions. There are good reasons for this decision, but to keep this topic as simple as possible, I’ll explain those reasons in the article about Using Conditional Actions.
In any case, don't skip reading the rest of this article just because I tend to favor conditional actions over standard actions. I'm about to give you a basic introduction to the Advanced Actions dialog. You need to be very familiar with this dialog. So start with the simpler version used for standard actions so that it will be that much easier to get your head around the extra complexities added when working with conditional actions.
A closer look at the Advanced Actions dialog
Now that we’ve seen how easy it is to create a basic standard action, let’s go back and take another look at the menus, buttons and icons of the Advanced Actions dialog. We’ll expand on this information in the other article that explains how to create and use conditional actions.
If you place your mouse over each icon, you’ll see a small yellow tooltip explaining its function. The controls and icons in the header section refer to things you can do to the actual named actions you create or edit with this dialog. The items in the lower grey header bar of the grid section refer to functions performed on the line items below it.
Managing standard actions
Let’s look first at the controls in the header section of the dialog. These are the ones that allow you to create, edit, or delete the entire standard action.
If you’ve just opened the Advanced Actions dialog, by default the Create from: field will be set to Blank, the Action Type: will be set to Standard actions, and the Action Name: field will be empty. If all you want to do is create a new standard action, then just type an appropriate Action Name, set up one or more action line items, and click the Save As Action button at the bottom of the dialog.
If you have saved or imported Shared Actions into your project, these will be listed here as possible starting points for a new action. Otherwise this field will always show as Blank.
Captivate only really allows you to create two types of actions; standard actions (as we’re discussing in this article) or conditional actions.
Apart from allowing you to assign names to new actions, this field also allows you to change the name of any currently selected action by just typing a new name into the Action Name: field and clicking the Update Action button at the bottom of the dialog.
Create a new standard action
Once you have created a new action, or selected an existing action, to create another you just click the icon in the bank of icons at the top right corner. As mentioned above, if you have shared actions in the project, you can also use these as the blue-print for a new action.
Import and export shared actions
Captivate 7 users will see two extra buttons in this bank that were not present in earlier versions. These allow for importing and exporting Shared Actions.
Delete an action
The fact that standard actions also contain single actions (the line items on this grid) can be a little confusing at first. But it’s very important to understand the distinction, particularly when it comes to the Delete and Remove trashcan icons found on this dialog, which both look almost exactly the same.
The trashcan in the grey bar of the grid will only delete currently-selected single action line items. However, the trashcan icon at the top of the dialog will delete the entire standard or conditional action in view. So be sure to think carefully about the objective before you click either one of these icons.
Duplicate an action
If you need to create a new action, and you have already created one that is vaguely similar, just open that action and click the Duplicate icon. This creates a copy of the currently displayed action with Duplicate_Of_ appended to the previous name. Just rename and edit this new action as needed. I use this technique quite often because it can save a lot of time.
The Actions grid
Let’s now look at the grid in the lower part of the Advanced Actions dialog. Each line item in this grid is a separate single action that will be executed in sequence at run-time, starting at the top of the list and progressing downward one action at a time. Since there are no conditions in standard actions, each and every line item you define here will be executed at run-time. So if you don’t want an action executed, you need to remove it by selecting the line and clicking the Remove trashcan (not the one at the top of the dialog).
There are actually three ways to add new line items. But you need to look closely at how these work because their behavior might at first seem somewhat confusing:
Add new line items underneath others
If you click the icon on the far left of the button bank, then this will insert new line items underneath all of the other lines, no matter which one is currently selected.
Insert new line items above others
If you click the icon third from the right (just to the left of the Move up arrow) then this will insert a new line item above the currently selected line item.
This is another method of adding line items, but the difference here is that when you copy and paste a line it overwrites the currently selected line, rather than inserting a line above or below it.
Be careful of this behavior because it can easily catch you out. Although you can cut or copy multiple line items from somewhere else on this or another action, you need to keep your wits about you when you come to pasting because you need to first select a blank line, otherwise existing lines may get inadvertently overwritten and cause your action to be missing required elements at run-time.
Changing the order of line execution
Lines added to a standard action will be executed sequentially at run-time from top to bottom. You can add them in any order and use the Move up or Move down icons to change the execution order.
Tracking usage of actions
The Usage button at the very bottom of the Advanced Actions dialog deserves a special mention.
Once you start getting into creating advanced actions to build complex interactivity, it tends to go to your head a bit and before long you may find you have far more actions in your project than you actually need. So a good periodic culling is in order. But if you try to delete any action that is used on any slide in your project, Captivate will spit up a Warning message box to ask if your sure about this.
Then, if you click Yes, it will give you another warning box informing you that deleting the script is not possible because it is referenced by one or more events. (Why couldn’t it do this the first time?)
So Captivate is trying to prevent you from doing something you might regret. But, in a large and complex project, how will you ever find out which event is referencing this action? That can be like trying to find a needle in a digital haystack.
That’s where the Usage button comes in. Just select your action, click Usage, and the dialog will immediately tell you which slide or slides have events referencing this particular action. Then all you need to do is go back to those slides, unhook the action from the event, and then you can proceed to delete it.
WARNING! A bug in Captivate 7.0 allows deletion of referenced actions
If you are on Captivate version 7.0, please be advised that it has a bug which means Advanced Actions can be deleted even if they happen to be referenced on some slides in a project. Captivate asks if you are sure about wanting to delete, but it fails to prevent you from deleting when it should.
This bug is easily resolved by installing the free 7.0.1 update patch available via the Help > Updates menu within Captivate.
Editing Variables from within the Advanced Actions dialog
Keen-eyed readers may have noticed that the Advanced Actions dialog also has a Variables button at the bottom. This allows you to call up the Variables dialog to create or modify user variables at any time, even while creating or editing standard or conditional actions.
This is quite a time-saver because these dialogs are modal, which means that only one of them can be active at any time. Without this button, if you needed new or modified variables, you’d be required to close the Advanced Actions dialog, use the Project menu to open the Variables dialog, make your changes there, and then back-track to the Advanced Actions dialog again.
Next stop conditional actions. That’s where the real fun begins! And if you want to transport your standard or conditional actions to other projects, you may also find this article about shared actions very interesting.