Tips for Advanced Actions

Reader, known or unknown, accept my sincere wishes for an exciting, healthy and peaceful 2011.

And for myself, sorry for the repetition I do hope to have more interaction with you. Please curse me, correct me, tell me blog postings are too long, too short, too many, too few, too serious, too much/bad images, missing audio, missing information about me, ... anything you want. I do welcome any comment, suggestion, question, issue, usecase.

Some people on the Captivate user forum asked how I did learn to use advanced actions and variables? To be honest, my way of learning is mostly by jumping in, bumping my head, making mistakes, restarting, trying to avoid those mistakes, etc. Since I started using Advanced Actions, by that process of trial and error I came to adopt a certain workflow. And in this blog post, I want to offer some tips to let you perhaps avoid some bumps on the head ;-). Here I suppose that the Captivate slides themselves are already created, that you have decided how to put up the project.

1. Prepair
  • Take time to "write" a detailed description (I do use Evernote or Onenote, but a piece of paper is also OK) of what you want to realize, and take into account every possible situation that could occur.
    Examples (situations): multiple attempts, going back, typos by user.

  • Initializing: is often needed for variables, for (in)visibility of objects etc; has this to be executed only once, or several times?
    Movie is linear (going back not allowed): no need for an advanced action to initialize.
    Going back allowed: initialize using an advanced action (on entering slide)

  • Identify system variables you will use

  • Redaction of a list of necessary user variables, choose labels for them

2. Identify triggers/events

Advanced actions have to be triggered, to be attached to events. It is easier to create several advanced actions on different triggers than one complex advanced action on one trigger. But the number of available triggers is limited, and moreover some triggers do not support all possible statements in an advanced action. To see which statements in an Advanced action will be possible, open the drop down list in the Properties panel, region Action for this trigger. Here is the list of possible triggers in your project:
  • On Enter slide: normally any statement can be added to an Advanced action attached to this kind of trigger. Very suitable for initializing, for preparing the objects as you want them to look on this slide. Only limitation: "Show" statement is only possible for objects that do exist on this slide (not for objects on another slide that are timed to display for the project - you can use the "Hide" statement however). On Exit slide:you cannot use the "Show" statement, not even for objects that are on that slide. You cannot use the "Hide" statement either! This trigger is suited for calculating variables that are changed by (user) actions on this slide, to increment/decrement a counter etc.

  • Button/Click Box: can trigger an advanced action on Success and another one on Failure (after last attempt); same kind of statements as for entering a slide, with moreover jump to other slides possible.

  • Text Entry Box: can also trigger both on succes and on failure, if you validate the user entry. If you do not validate the entry only the success action is available as trigger.

  • Question slides: can trigger an advanced action on Success and another one on Failure (after last attempt); this action will be executed, not when the user clicks the Submit button, but when he clicks on the slide or uses the shortcut Y (if you keep the default Success/Failure captions).

3. Choose proper action type

Which advanced action(s) do you need?
  • Standard action: if you need a sequence of actions to be performed, be sure to choose the proper sequence because statements will be executed from top to bottom. If such an action seems not to work well, it can help to add as last statement the action 'Continue'. You can create AND, OR combinations, but also customized conditions (AND + OR, watch the sequence and logic in that case).

  • Conditional action: if the actions to be executed depend on a question (decision), there are at least two sequences of statements needed:
      If you only need two sequences, use a single decision and put one in the THEN, the other in the ELSE part
      If you need more sequences, use multiple decisions, and only the THEN part.

  • Combination Standard+Conditional action: be sure to put the standard action in the first decision. I discussed this situation in this article

4. Label

I blogged already about the importance of good labeling. Some extra tips:
  • Prefer short names, starting with really identifying characters (works better in dropdown lists).

  • Normally you will have similar objects, variables, advanced actions where you will use the Duplicate functionality and do some editing; choosing small, significant differences in the names (1 or 2 characters) makes editing a lot easier.

  • If you have a lot of advanced actions, using characters in the name that indicate the trigger that it has to be attached to, will avoid a lot of searching.
    Examples: EntSlide1, ExtSlide1

  • Do not start user variables with r or c (both are first characters for system variables), but use another first character.

5. Create user variables

You can start creating user variables with Project, Variables. This dialog box has all the functionalities. There are two other possiblities:
  • To create a user variable to be associated with a Text Entry Box, you can use the small X in the Properties accordion, region General. It is a pity that the defautl associated variable (something like Text_Entry_Box_x) is not replaced by this better labeled user variable (see below: cleaning up the list with variables).
  • If you forgot to create one user variable, you can also do it using the button Variables in the Advanced Actions dialog box. But: although the look of the opening Variables dialog box is identical to the one that opens with Project, Variables, you will not be able to remove variables if you choose this workflow.
Please, clean up your list with user variables (use Project, Variables), when you have finished creating your properly labeled variables. It is always easier to manage a shorter list.

6. Create advanced actions

  • Use the Save/Update button as often as possible (pity that there is not a shortcut like CTRL-S)

  • If you have similar actions - where you will use the duplicate action functionality - create one of them, test it thoroughly before duplicating; that will you save a lot of time.

  • If you have a complex conditional action, do not put in all decisions, start with one, test it, add a second, test it etc. Sometimes I even test out first a sequence in a standard action, then copy the statements to the conditional action regions.

7. Test, test, test..

No one likes this, but please do test all situations. It will help for testing to put up on the slides some (temporary) Text Captions showing the user variables you are manipulating. This makes it easier to trace them and to detect bugs.


Did you read everything up till now? Congratulations! Whow, this was the most difficult post I wrote since I started blogging. And I'm very curious how it will be received. I should have added audio, images or a worked out project as an illustration. I have tried to "compilate" what is floating in my head, but am not sure this compilation is OK. Anyone to help with the debugging? Other suggestions? If you want me to apply what I described to one of your projects, add a comment. Please?
4 responses
Nice summary LIeve. It's interesting how universal the steps are to other programming kinds of experiences. The big one for me is always anticipating the logistics of when people will return to a given slide etc. Seems like I never remember to set it to re-initialize until i test and see that it hasn't. ;)
Hi Lieve,
Very well written. I like the advanced interaction stuff a lot, because it has a lot of possibilities.
Next week I will give my first Captivate 5 training, and will certainly mention this blog...

One thing I always tell people when using advanced interaction is to be cautious. Before you know it, you will have a large list of Variables, and it will be obvious for you, but not for someone else that has to update your file.
And when something goes wrong, it can be a real tedious job to find the problem...

I am happy with your posts. I read them every time, but can not always use them immediately.

Not to add audio etc, seems to be a good thing. For people new to Captivate, this would be too overwhelming. If you compare version 5 of Captivate to version 1, it has become a specialist tool, and probably version 6 will be even more advanced. On the bright side, you do not need to be an expert in Flash to create some nice animation...

I've written far too much. Thanks again for all your hard work.

Dieter

@AdobeElearning Indeed, every programming experience needs same kind of logic (I'm not a programmer :-) But some of the tips are really specific for the user interface of Captivate. If you have edited a lot of decisions, advanced actions based on duplicates, you'll see the advantage of choosing short but significant labels which allow to save quite a lot of keystrokes. And from my activities on the user forum I'm aware that most Captivate-users do not have a programming experience neither, that is why I thought this (perhaps annoying) blog post to be useful.
@Dieter Thanks again for your comment. I'm a bit jealous! You can teach Captivate, I can only blog about it. About the list of variables: I have introduced some feature requests such as to be able to group user variables (like you have groups of system variables),to be able to print, export and import advanced actions, to be able to add comments to the advanced actions which will all be a great help to make the editing process for others more accessible.
My remark about audio; images, animations: to be logical I think that a blog about Adobe Captivate should not use written text exclusively. That is the reason why mostly I do try to attach images, a SWF and audio would be just complementary to the written text. Captivate should produce a multimedia experience, so ... my blog should be similar. Hope you understand my 'intuition'?