Quiz showing Elapsed Time


Today's posting is about advanced actions but not complicated. This is why this is very well suited for users who want to start with advanced actions and variables. I'm trying to answer a question from the Captivate user forum: "I would want the total time taken for the quiz to be displayed...".


Play with this example to see a possible solution, realized with some advanced actions. After the introduction slide the time spent on each question slide will be stored and displayed on the next slide. The total time spent on the quiz will be visible as well. Both will be showed in seconds. On the score slide the total time of the quiz is displayed, either in seconds or in minutes. If it is a really long quiz, it would also be possible to display in hours of course  :-). I will explain briefly the variables and advanced actions used. In the Gallery you'll find a screenshot of each advanced action.


I used the system variable cpInfoElapsedTimeMS and created some user variables:
  • v_start will store the start time for a question (in milliseconds), reused on each question slide
  • v_end  will store the end time for a question  (in milliseconds), reused on each question slide
  • v_duration will store the time spent on a question (in seconds), reused on each question slide
  • v_total will store the time spent on the quiz so far (in seconds)
  • v_help is a variable used to transform the total time to minutes 
  • v_minutes will store the total time spent on the quiz in minutes
On the second question slide, a text caption, labeled InfoTime shows the value of the variables v_duration and v_total. This Text Caption is set to display for the rest of the project and will be hidden by an advanced action on entering the Score slide. For the moment there is no possibility to have a 'mask' to display the time, sometimes you'll see a lot of decimals.

Advanced actions

I have included all the advanced actions as screenshots. Have a look at the image gallery. There are 3 advanced actions:

1. SetStart

This standard action is executed on entering the first Question slide. It populates the variable v_start with the value of the system variable cpInfoElapsedTimeMS at that moment. 

2. StartNext

This standard action is executed on entering all Question slides with the exception of the first one. There are more activities here:
  1. the user variable v_end gets the value of  the system variable cpInfoElapsedTimeMS at that moment;
  2. the variable v_duration is calculated from  v_end and v_start; it is in milliseconds after this statement
  3. the variable v_duration is translated to seconds
  4. the variable v_total is recalculated (in seconds)
  5. the variable v_start is reset to the  value of  the system variable cpInfoElapsedTimeMS at that moment to start the chrono for this question

3. EnterScore 

This conditional action is triggered on entering the score slide. It has 2 decisions, the first Standard is really a standard action, the second Minutes is a conditional action. If you are puzzled about this combination of standard and conditional action, please check this article Combining Standard and Conditional in one Advanced Action.

3.1 Standard decision
  • hides the Text Caption TimeInfo (that was displayed for rest of project)
  • repeats the statements 1-4 of the action StartNext; we do not need 5, because there is no question slide anymore
3.2 Minutes decision
On the score slide you have 2 Text Captions to show the total time spent on the Quiz; initially both are invisible: 
  • YesMinutes shows the total time in minutes and will be set to visible if the total time is greater than 60 sec; you'll find this in the Then part of this decision
  • NoMinutes to show the total time in seconds, will be set to visible if total time is smaller than 60 sec;  you will find this in the Else part of this decision
Let me know if you disliked or liked this explanation. And if you have more questions, do not hesitate...

Strings, Text Entry Boxes and Associated Variables

On the Captivate blog recently two tips for using advanced actions were published: Few tips on Advanced actions. If you have been watching my blog, you'll know that advanced actions is my favourite subject. And after reading the Captivate blog posting, I felt some more details about the first tip would be welcome. If that tip was perfectly clear to you, please do not continue reading this post.

The forementioned tip is about checking the possible emptiness of a variable by comparing it with an empty user variable, which is indeed the proper, even the only way. The basic reason is that in the simple Captivate scripting language a string shouldn't be included in double quotes as is the case in other scripting languages, at least not when the string is only one word. If it contains more than one word, double quotes will be automatically added by Captivate, no need to type them. Here are some examples of conditions (words starting with v_ are always user variables in my self-imposed scripting grammar):
  • v_counter is equal to 12
  • v_name is equal to Lieve
  • v_score is greater or equal to 20
  • v_name contains Lieve
  • 1 is equal to 1
  • Lieve is equal to Lieve
Those examples work perfect and here quotes are totally missing, there is no visible difference bewteen a string and a number. The two last (absurd) examples can be used to create a decision to simulate a standard action that has to be combined with conditional action(s) as explained in the second tip of the Captivate blog. A couple of weeks ago I published an article about this workflow:
The tip about the empty variable is illustrated by a user variable associated with a Text Entry box. For those users who did try out advanced actions in the previous version (Captivate 4) I thought it appropriate to explain the changes concerning Text Entry Boxes and associated variables. This change has been puzzling me when I started with advanced actions in Captivate 5, and maybe I'm not the only one ;)

In Captivate 4, when you create a Text Entry Box, it will be labeled by Captivate like any other object. The default label for the first created Text Entry Box is TTextEntryItem1.  Immediately an associated variable is provided too, and it gets the default label TTextEntryItem1Var. That is great, because you can insert the variable later on in a Text Caption. I include a screenshot to show those default labels. Personally I will always attach a more significant label, you know me already as a labeling freak. 

In Captivate 5 however, both the Text Entry Box and the associated variable will get the same label. Have a look at the second screenshot with a partial view of the Properties panel. I highllighted (in yellow) both the TEB-label and the label of its associated variable. If it is the first Text Entry Box, both object and variable will get the default label Text_Entry_Box_1. Although I'm always complaining about the fact that so many different ID's are needed in a CP-movie,  I do not really like this situation where one label covers two different 'objects. When both are used in advanced actions it can be confusing. Perhaps an example can better explain my "dislike":
Three statements of an advanced action:
    1.  Assign Text_Entry_Box_1 with Lieve  
    2.  Apply Effect Text_Entry_Box_1 Fly In From Bottom Left
    3.  Assign Text_Entry_Box_1 with "Lieve Weymeis"

In this action the first statement will give a value to the user variable Text_Entry_Box_1. If you have a Text Caption visible with this user variable inserted, you will see the content (Lieve). The second statement has the Text Entry Box flying in. Later the user will type an entry for the TEB and the variable Text_Entry_Box_1 will change to this new value. In the last statement the content is changed again, and double quotes will be inserted by Captivate because there are two words.  Perhaps you'll understand now why I was confused. But luckily, in the Properties panel of the Text Entry Box you can immediately create another user variable: in the second screenshot watch the green highlighted X which will open a small dialog box where you can enter a new variable name. This workflow however is not possible in Captivate 4, where you have  to create the user variable first (in the Project, Actions dialog box) before being able to associate it to a TEB.
BTW will publish shortly another article about Advanced actions, to create a game control panel. And it has some examples of standard actions combined with conditional actions. Watch this blog, I'l post the movie to play with and a link to the article.

Stack Order and Master Slides


When preparing the usecase for a previous blog post about creating cleaner Captivate-files (Playing Hide-and-Seek with Captivate objects), by using the possibility to show non-interactive objects for the rest of the project, and hiding them with advanced actions, I bumped into an issue that puzzled me. So I turned to the proper place, the Captivate user forum and opened a thread. I did not have to wait long, Ashwin Bharghav (from Adobe) answered and offered a workaround.  And I want to explain the issue and its solution. 


For the pretest, one of the usecases in this previous posting I wanted to streamline the workflow in a template because its re-usability.  It meant not having to recreate the advanced actions all the time. To make the template as versatile as possible I decided:
  • not to use one simple image for the Yes and No buttons, but to split them up in a Shape + Text. Both for localizing, and adapting the formatting this is an advantage. I appreciate a lot the roundtripping feature with Photoshop in the - eLearning Suite 2 (such as being able to import layer comps) :-)

  • not to choose a background image for the master slide, but inserting an image on top of the background to enable swapping and editing the image in Captivate. In the example I used an image with both saturation and alpha adapted (alpha to about 40%).

In this usecase, a lot of non-interactive objects were timed to 'Display for the rest of the Project': the images of the buttons (both shapes and Text) and the questions. And when previewing or after publishing I did see this phenomenon: on slides where the objects were not really inserted but showed up because of their timing, they took over the alpha of the Image on the master slide. Have a look at the first picture included: watch the questions and buttons;  the last question and buttons are on the slide itself, the previous ones are on previous slide but display on this slide, and they are partially transparent!


I quote the answer of Ashwin
 "By default when the objects are timed to display for rest of the project, they will have the lowest order on other slides in the project. So as per this logic the objects are shown under the master slide image on other slides". 

This explained the phenomenon: the objects took over the transparency of the image on the master slide. But it was not what I expected from a master slide :( 

Workaround (s)

Proposition of Ashwin: when setting the timing to Display for rest of project, there is an extra option: "Place object on top" (see second image). This will put the object always on top of the stacking order on slides where the object is no really inserted but displayed because of this timing. This may not be really what you want, because the object will also stay on top of the real objects on that slide. In this usecase I could live with that solution, but will not always be happy with it.
Another workaround is merging the image in the background of the master slide, that was my approach when publishing the pretest on the blog.

Article with details about 'Hide-and-Seek'

If you are curious about the advanced actions I have been using in this pretest-project and in the keypad-simulation to realize the Show/Hide objects, I have published a detailed explanation of the workflow in this article: Using Display for Rest of Project to create a cleaner Captivate file

Playing "Hide-and-seek" with Captivate objects

This article was written for version 5. At that moment it was not possible to show an object, timed for the rest of the project, from another slide than the original slide where it was inserted. However this has changed for later versions: in 7, 8, 9 and later you can show an object timed for the rest of the project from any slide.

Hide/Show actions, attached to events like entering slides or clicking a button/click box are popular. They can also be used in Advanced actions. But from several questions on the user forums I concluded that there is some confusion about what is really possible and impossible with those 'simple' actions. So, thanks folks for giving me the inspiration for this blog posting! If combined with the timing option 'Display for rest of project' you can end up with a Captivate-file that looks a lot 'cleaner' (perhaps I'd better try to keep my real desktop as clean as those files).  The examples were created with Captivate 5, but they can be realized in Captivate 4 as well.

Please, play with this SWF a little bit. I extracted this file from a larger project where I try to motivate students and colleagues to use Twitter on the college campus. This example is like a pretest, and the result will be used to offer a customized menu of chapters to be viewed by the user (this part is not in the example). And while playing, try to figure out how you would realize this in a Captivate file.
Did you know this?
4 important tips you have to be aware of when showing/hiding and using 'Display for rest of project'
  1. You can apply the action Show only to objects that are really on the slide
    p.e. you put a rectangle on slide 1, set to 'Display for rest of project'; if it is initially hidden, you can only show it on slide 1, not on slides 2, 3 etc
  2. You can apply the action Hide to objects wherever this object will be visible on runtime
    p.e. for same rectangle, if it is visible, can be set to be hidden on slide 2, slide 3 etc
  3. You can choose the timing 'Display for rest of project' only for non-interactive objects, not for buttons, click boxes, Text Entry boxes
    some interactive widgets (p.e. Perpetual button) can be displayed for rest of project
  4. When 'Display for rest of project' is applied to an object, it keeps its unique ID for the rest of the project
    if you copy an object to another slide, it gets a new ID; this leads to a lot of repetitive work when creating advanced actions
In the example of the previous blog posting (Creating a keypad-simulation) I did use those tips to have a 'clean' Captivate file. What do I mean by 'clean'? Have a look at the first image in the attached image gallery: it shows the filmstrip of this Keypad-file. Watch slides 2-8: on every slide only objects added on that particular slide are visible in the Filmstrip. On the stage you'll see everything: not only the objects on that slide but also those set to 'Display for rest of project'. In the second image you see the stage focused on slide 6 'In'. Whereas the Timeline of this slide only has the objects Highlight (red), a Text Caption and a click box (third image), on the stage you also see the images 'Keypad' and 'EnterPin' (green display) which are really on slide 2 and displayed for rest of project.
Overview visibility objects Keypad-simulation
I really want to recommend, creating an overview before starting to configure Show/Hide actions. Here is a rather simple overview of the 4 image-objects (keypad and 3 displays) of my keypad-file. For more complex projects I would use a table:
Keypad-image         Visible on all slides from slide '2. Digit1' until slide '8. OK'
                                Not visible on slides '1. Intro' and '9. End'
EnterPin-image       Visible on all slides from slide '2. Digit1' until slide '6. In'
                                Not visible on slides '1. Intro', '7. Not-OK', '8. OK' and '9. End'
Pin_NOK-image       Visible on slide '7. Not-OK' only
Pin_OK-image         Visible on slide '8. OK' only
Could you figure out how to realize this Captivate file with Hide and Show? If you do not allow the user to repeat the entry of the pincode after the slide Not-OK it is not that difficult. I offer you some tips:
  • set objects to 'Display for rest of Project' only when they have to be visible on more than 1 slide
  • concerning the advanced actions for the click boxes: Article: create keypad-sim
  • use simple standard actions (very few statements) on entering the slides
Example pretest
The example you have been playing with at the start (pretest) is more complicated. Have a look at the 4th image in the Gallery which shows the filmstrip of this project: isn't that clean? And the last image shows the Timeline of one of the slides, slide Question4. On this slide you see:
  • a Text Caption Quest4 with the 4th question, displayed for the rest of the project
  • image SJa4: image of a button, displayed for the rest of the project; a real button is interactive, cannot be displayed for the rest of the project, and moreover it only needs button functionality on this slide, so I preferred an image that is covered up with a click box (CB only on this slide)
  • Text Caption Ja4, displayed for the rest of the project:  have to localize a lot, that is why I imported 4 layers from a Photoshop-file (two button-images and two text layers); if you do not need to change the text that often you can of course merge image and text
  • image sNee4: similar to SJa4
  • Text Caption Nee4: similar to Ja4
  • Click Box CB_Yes4: only on this slide
  • Click Box CB_No4: only on this slide
Imagine what the timeline would have been if all objects from previous slides were copied to this slide (and even worse for next slides)!

This is a typical project for which I do create a template, because it can be used over and over again. The advantage is that the advanced actions will be stored in the project, and since a lot of objects have a unique ID, due to their timing (for the rest of the project), adapting those actions to similar projects will be a lot less cumbersome.

Would you like me to explain the advanced actions used in this project or for the keypad-simulation in an article? Please, post a comment!

Create a Keypad-Simulation using Advanced Actions


It has been a while since I last posted an example created with advanced actions. This posting treats the answer I tried to give to someone on the user forum who asked if it is possible to simulate the entry of a 4-digit code on a keypad and show the appropriate screens when the code is entered correctly or incorrectly. This sounded like a fine example for advanced actions, so I tried to work it out. This could certainly be done in a cooler way by creating/using widgets scripted with ActionScript, but am not sure it would have taken less time. For your information: I timed working and it took me exactly 45 minutes. But I did not create the graphics :-)


Play with the result, please. I explained the workflow in an article: 

Work flow

The file has 7 slides between the introduction and end slides: 
  • 4 slides to enter the 4 digits, they are labeled Digit1, Digit2, Digit3, Digit4
  • 1 slide for confirmation where the user presses the IN button, labeled IN-slide
  • 1 slide that shows the image for a correct PINcode, labeled OK
  • 1 slide that shows the image for an incorrect code, labeled NotOK

 The tedious part of this SWF was 

  1. the creation/labeling of all the click boxes. Slides Digit1 - 4 have each 10 click boxes over the 10 possible digits.
  2. the creation of the simple advanced actions for each click box (40 actions)

Some timesaver tips for this monotonous work: 

  • choose a short but meaningful label for click boxes & advanced actions:
    • examples click boxes: label CB_0_1 for the click box over the number "0" on the first slide, CB_1_4 is the CB over the number "1" on the fourth slide...
    • examples advanced actions: CB1_0 is to be attached to CB_0_1, CB4_1 is to be attached to CB_1_4

  • create first slide with its click boxes and attached advanced actions, duplicate then to create the three other slides:
    • you will have to label all new click boxes on the duplicate slides (too bad, but they get their individual default ID)
    • to change the attached advanced action is easier with the chosen labels, on second slide CB1_0 has to be replaced by CB2_0, CB1_2 by CB2_2 etc
The advanced actions to be constructed for this project are pretty simple, you can find more explanations in the article mentioned before.

Unknown is Unloved (Flemish Proverb): Branching View

If you are a long-time user of Captivate you certainly know the Branching view as one of the "big three" (with Storyboard and Edit view). But I want to ask you just one question: if you upgraded to version 5: 
 "Did you explore the revamped Branching view - sorry, the Branching panel as it is officially called in the Help?"
 It is part of the Navigation workspace (see blog post about workspaces). Of course you can show this view using the Window menu or the shortcut key SHIFT-CTRL-ALT-B.

Similar to the global user interface, this new panel is quite different from the "old" version. It is up to you to discover its small but useful gems. I would like to help somehow in this exploration. Personally I do use this Branching view more specifically for more complex projects:
  • to look for orphaned slides (unlinked to other slides)
  • to check all links, including success and failure links
  • to label slides (undocumented feature)
  • to control logic of slide groups
  • to export to an image (documenting the project)

When opening Branching view, it will have the activate slide in focus. You will see only two panes: above the Main pane, where you will be able to do some editing, and beneath the 'Preview' pane which I would rather call the Navigation pane where you see which part is visible in the Main pane. You can easily move the orange rectangle in this small Navigation pane to go to another part of the project. In the top right corner you'll find a dropdown list and a slider to change the zoom percentage on the Main pane.

Please, open the hidden pane 'Unlinked slides' by using the arrow button left. This will also show the Legend pane, explaining the color code for the link arrows. A pure black arrow link means that the playhead is just moving on, there is no interactive object in the predecessor slide. Green and Red arrow links to sort from slides with interactive objects, could be linked with Success and Failure paths. Beware: if your are using a high resolution screen you will need to zoom in to see the difference between the colors of the arrows. However when a slide is selected, in focus, the sorting arrow will be enhanced (width increases). I add a screenshot of the Branching view with all panes expanded.

Discovering unlinked slides is very easy with the left most pane, a new and useful feature in CP5. In the screenshot you see that one slide is orphaned, has no links with any other slide.

The Branching view (panel) is dynamically linked with the Filmstrip and with the Slide Properties panel. Any editing in the Branching panel will be immediately reflected in Filmstrip/Properties and vice versa. I created a customized workspace 'MyNavigation workspace' in order to make the three of them visible. You will see this workspace in the added Captivate movie. You can dock the Branching view, and it will take then its minimum width or minimum height. When docked with the Filmstrip in the left station it will have its minimum width. When docked with the timeline in the bottom station it gets its minimum height. I just docked it in the middle, and it shrunk the stage to a tiny small vertical panel (width of my screen = 1600 pixels).  You do not really need the stage for the goals I described, since you can increase the size of the slide in focus by double-clicking it (in CP4 double-clicking a slide in Branching view did get you back to Edit view with that slide on the stage). To maximize the size of the Main Pane you can collapse both the Preview pane and the Unlinked slides pane.

Try double clicking the navigation arrows: you'll see which action is responsible for the navigation from or to that slide. 

I find it rather difficult to show the possibilities of the Branching view only with a blog text. That is why I have tried to create a Captivate movie (partially interactive). In this movie I tried to show
  • the navigation with the preview pane
  • the HUD (Heads Up Display) you will get when selecting a slide or double-clicking a navigation arrow
  • collapsing and expanding slide groups
  • detection of orphaned slides
  • labeling slides
  • changing navigation
  • exporting to an image
If you are creating complex projects, hope you will explore this Branching view. Feel free to let me know if you can appreciate its secrets?

Watch this movie:

Create and Use a "Knockout" Master Slide


A new version of this blog, which is valid for more recent Captivate releases (up till 11.5) has been posted under the link:



This question appears regularly on the Captivate forum: how can I insert captured slides in a master slide that has a logo and other information on board. Perhaps this small tip with a step-by-step planning can help you achieve your goal. Some images are attached to explain the workflow. And you will need some maths (you know probably already that I'm a maths-lover) but I'll provide you with a simple rule.

Work Flow

For this example I wanted to create a master slide to have a final SWF with a resolution of 920x600 pixels. The captured slides were created with a resolution of 640x480pixels, which left enough space to be filled with logo, text, etc.

Step 1 (in Photoshop or other app) - create the Knockout 

I created an image to be used as master slide. I created such an image in Photoshop but any program that allows you to have transparent pixels will do. This is the first image in the attached gallery. It is exactly 920x600pixels, has left a bar with a width of 200pixels, at the top another with a height of 70 pixels, to the right a bar with a width of 80 pixels and a the bottom a bar with a height of 50 pixels. The transparent region is exactly 640x480 pixels. In the image this transparant region is white.

Step 2 (in Captivate) - first rescale

Some maths to start with:
  1. calculate the difference between the widths of the vertical bars:     200 - 80 = 120 pixels
  2. new width project will be 640 + 120 = 740 pixels
  3. calculate the difference between the heights of the horizontal bars:   70 - 50 = 20 pixels
  4. new height project will be 480 + 20 = 500 pixels
Rescale the project using these settings:
  • deselect 'Maintain aspect ratio' and introduce the new dimensions
  • under 'New Size is Larger', select 'Keep project the same size and position project Bottom Right; I choose this because the bottom bar and the right bar have the smallest dimension;
The original captured size and the size after this first rescale are visible in the second and third image of the Gallery.

Step 3 (in Captivate): second rescale

 Rescale now to the final size, for this example to 920x600 pixels, with those settings:
  •  deselect 'Maintain aspect ratio' and introduce the final dimensions
  • under 'New Size is Larger', select 'Keep project the same size and position project Center
The fourth image in the Gallery shows the situation after the second rescale of the project.

Step 4 (in Captivate): apply master slide

Go into the Master slide panel and import the Knockout image either to the Library or immediately to the slide. Be sure it is positioned at X=Y=0 (Properties panel). Apply the Master slide to the captured and rescaled slides. The last image in the Gallery shows the result.

The Gallery is not really showing the image as I posted them. The white space that is added after the rescaling has partially be trimmed, and the difference in total size is not visible because all images are rescaled automatically. I'm very sorry about that, should move over to a better blog hosting.

Please let me know if this kind of small tip is useful, and do not hesitate to give me suggestions.

Shortcut Keys: Moving and Resizing Objects


In a previous posting I promised to write something about my favourite shortcut keys.  And since editing is something that takes up quite a lot of time, I want to share some tips about that part of the workflow. How can you move, resize and align objects in an efficient way using shortcut keys? And there are quite a lot of (hidden) shortcuts. In the Captivate blog

Do you know the Registration point?

For Captivate users that are not familiar with Flash, I first want to explain the importance of the registration point for Captivate objects. If you are a Flash user just skip this, but you will have to know that in Captivate it is not possible to move this registration point.
The registration point is always the upper left corner of the bounding box of an object: you see some examples in the first image. The coordinates you are seeing in the Properties panel, region Size and Position are the coordinates of this point. For the math lovers (also for non-math-lovers): do know that the zero point of the coordinates is situated in the upper left corner of the stage. This means that the X-coordinate of the registration point is the horizontal  distance (in pixels) from the left side of the stage and the Y-coordinate is the vertical distance from the upper side of the stage. In the image gallery included in this posting I show the registration points for some objects.

Why is this point so important?

  • If you use the snap to grid feature, it is the registration point that will snap to the grid.
  • If you use a shortcut key to increase the size of an object, the registration point will not move, it is the opposite corner (down right) that will move.
  • If you align objects their registration points will be aligned. I added some alignment examples in the image gallery

Grid and Snap

Did you ever use the grid? There is a button to show/hide that grid (or you can use the View menu). The default size of the grid mesh width is 16 pixels, but you can change this in the Preferences, Global, General Settings. If you activate the "Snap to Grid" (with button or View menu), moving an object with the mouse or with an arrow key will cause the registration point of that object to snap to one of the grid points.  But did you know that the mesh width is also important when moving and resizing objects with shortcut keys?

Moving objects using shortcut keys 

How can you move an object with shortcut keys?  Be sure to have the Selector tool activated and select the object.  If the Snap to Grid is activated, an arrow key will always move the registration point to the next grid point. But if this snap is deactivated:
  • Using an arrow will move the object (by its registration point) by one pixel in that direction.
  • Using an arrow in combination with SHIFT will move the object 10 pixels in that direction.
  • Using an arrow in combination with CTRL will move the object by the mesh width of the grid, thus 16pixels if you did not change the default valuedirection.
This works also fine with multiple selections


Resizing objects using shortcut keys

For resizing activate/deactivate the snap is not important. Here are the possible shortcuts:
  • Using ALT+RIGHT will increase the width of the bounding box with one pixel (registration point will not move).
  • Using ALT+LEFT will decrease the width of the bounding box with one pixel (registration point will not move).
  • Using ALT+DOWN will increase the height of the bounding box with one pixel (registration point will not move).
  • Using ALT+UP will decrease the height of the bounding box with one pixel (registration point will not move).
If you combine SHIFT+ALT+Arrow: instead of 1 pixel the size change will be in steps of 10 pixels.
If you combine CTRL+ALT+Arrow: instead of 1 pixel the size change will be the mesh width (16 pixels if you did not change the default value).
As with moving those shortcut keys also work with a multiple selection.

My favourite sequence

  • Duplicate an object with CTRL-D; the duplicate will be placed 10 pixels to the right and 10 pixels down the original
  • Use SHIFT+UP to align the tops of the duplicate and the original; then you can use one of the other shortcuts to move the duplicate to the right  OR
  • Use SHIFT+LEFT to align duplicate's left side with the original; then you can use one of the other shortcuts to move the duplicate down.
Here is a captivate training to practice this workflow.

Unleash the Power of Variables in Captivate with Advanced Actions

A couple of weeks ago I blogged 'Curious about variables in Captivate 4&5', pointing to an introductory article on variables.

Was a little bit wondering why no one blamed me yet for not keeping my promise to publish a second part, explaining how to extend this power by using (simple) advanced actions. I always try to keep promises, but had a lot of deadlines to meet.

The promised article is just published. As the previous one it is meant for those users who want to start using variables and advanced actions, not for experienced programmers. You will see how to realize this video, where system variables and user variables are used. The Advanced actions are explained elaborately, you will create four Advanced Standard Actions and one really simple Advanced Conditional Action.  You will learn about the need for initializing. In this article the statements for the actions that you will use are:

  • Show to make an invisible object visible
  • Hide to make a visible object invisible
  • Assign to change the content of a variable
  • Expression to create a formula to be stored in a variable
  • Apply Effect to apply an effect to an object whenever the Advanced Action is played
  • Jump to to branch to a slide

You can play with this SWF. There are different ways to show a date, p.e. today will be indicated as:

10/6/2010   in the USA

6/10/2010   in Europe

2010/10/6   according to ISO rules

Make your choice, you can change your mind as often as you want. If you are getting curious about the workflow for this movie, check the link to the article:

Just hope that you will be as captivated as me by the way you can control your movies using those actions!

Some Reasons for Labeling in Adobe Captivate

Before plunging into this subject, I want to thank those who commented, tweeted, e-mailed as a reaction to my previous blog post 'To blog or not to blog?' A lot of those reactions really touched me, and they provided me with the energy needed to get on with the blog. Please, feel free to suggest new subjects or react to the postings, I would appreciate it a lot.


If  you have been reading one or more of my articles, you already know  that I'm addicted to labeling all kind of objects in Captivate. This is partly but not only due to my playing a lot with Advanced actions. I will try to explain the reasons for spending "precious" developing time to label master slides, slides, objects, effects, audio etc. Although the screenshot in this posting are from Captivate 5, a lot of the reasons mentioned are also valid for earlier versions of Captivate. Where necessary I will indicate that it is only valid for version 5.

Screenshots are in a Gallery at the end of this post.


1. Why do I label slides?

First of all, it is so much easier to find a particular slide in the Filmstrip and in the Branching view.
For complex projects I use the Branching view a lot and  as you can see on this first screenshot if feels more comfortable to judge the different workflows in the project when meaningful labels are visible. If I'm working with slide groups I may just label the slides within a group with the group name followed by a number, especially if the slides are the result of capturing some software process.

Tip for CP5 users:  do you know that it is possible to label slides in this Branching view using the HUD (Heads Up Display)? In this HUD you can also define the action 'Jump to'. Do not forget to confirm either labeling and/or jump action with the positive tick.

Since I'm often using a Table of Contents in my projects, the navigation for the user will be facilitated by labeling the slides as you can see in this second screenshot. 

For navigation in a non-linear project assigning the action 'Jump to slide X' is often necessary, and it is so much easier to jump to a labeled slide than having to search for the right number of a slide one wants to jump to. This is even more the case when inserting this kind of action in the Advanced Actions dialog box.

And, more specific for reporting reasons, the Advanced Interaction view will show the slide labels as well.

2. Why do I label objects?

Let us start with Non-interactive objects (that cannot be scored by default): Text Caption, Rollover Caption, Rollover Image,  Highlight Box, Zoom object, Image, Drawing objects. Labeling those objects is interesting in all CP-versions if those objects are used in actions like Hiding/Showing and certainly if those actions are in Advanced actions (CP4 and CP5 only).

Only for CP5 users: did you see that object labels are visible on the timeline? This should be stimulating to label them, at least when you have a lot of objects on a slide. Try to select one out of all those Click boxes (see screenshot) if they are indicated by their default names Click_Box_x!  Only Text Captions  are by default easily recognizable on the Timeline because the text (or part of it) is visible.

Same reasons are valid for Interactive objects (that can be scored by default).

Only for CP5 users: extra advantage is objects labels will be visible in the Advanced Interaction view!

3. How do I label Advanced actions and variables?

Here you have no choice: each advanced action and each variable has to be labeled. Some tips? I will always start a variable name with v_ to make it clear that this is not a simple object. In dropdown lists where system and user variables are mixed up, all user variables will then be grouped together.
Advanced actions have to be triggered by an even like Entering a slide, clicking on a button or a click box. Since Advanced actions will have to be assigned to the 'trigger' for the action, I will often put an indication to the trigger in the action label. This is very useful when you need similar actions to be triggered by similar events (where you will use duplicate functionality and editing). I believe this will better be explained by a couple of examples:

  • If the action is to be triggered when entering a slide labeled 'Menu', this advanced action I'll label 'EnterMenu'
  • If the action is to be triggered as a success action for a Click Box and there are different Click Boxes with similar actions, I will choose a similar name for the Click Boxes (such as Yes1, Yes2,...) and the corresponding actions are labeled CB_Yes1, CB_Yes2,... Attributing the correct action to the corresponding Click Box is then a lot easier.


If you are not yet persuaded that labeling has a lot of advantages, I give up ;-) But you have to know that for most project I will also label master slides, decisions in advanced conditional actions, voice over clips, customized effects and object styles.

Here is the image gallery: Branching view, TOC, Timeline and Advanced Interactions view.