Webinar Shared Actions!

Update

Thanks to all who attended the webinar, mentioned below. As usual I created a presentation with Captivate (2017) for this webinar. This allowed me to convert it to an interactive movie, which I want to offer to all readers of my blog.  I hope you'll enjoy it and learn something about Shared Actions, which are so ignored by most Captivate users. 

As for a normal training I like to use the subject of the training in the presentation. As you can see in this screenshot of the Library many shared actions were used in the presentation:

Their usage can be found in the Advanced Interaction panel, with the exception of the shared action which was used on the Drag&Drop slide:

I plan to explain some of those shared actions in future blog posts. Another plan is to write a more elaborate workbook for Shared Actions, which can be used for exploring in-depth, but also as a 'cookbook' because it will have recipes. A typical use case for Shared actions are Custom question slides, which are not treated in this short presentation. If you think a workbook would be help you  please send me a note or post a comment.


Invitation

If you are interested in a live session about using Shared Actions, you can register for the webinar on March 15, at 4pm CET (8am PT).  You'll find the link to the registration form for  webinar 'Dare to Share: Power of Advanced Actions in Captivate'. at the end of this invitation.

The majority of my blog posts are dedicated to advanced and shared actions. Advanced actions is a feature of Captivate since version 4. It allows to extend Captivate's functionaltiy in many ways, without having to learn a programming language. With the point-and-click interface of the new enhanced Advanced Actions dialog box in CP2017, you can realize scripts that will be converted to JS on runtime for HTML output (if you still use SWF output, will be converted to AS3).

Shared actions were new in Captivate version 7. They are a more flexible alternative to Advanced actions, with focus on reuslability. Due to the presence of parameters, to be filled in on assigning a new instance of the shared action to an event, you can adapt the action to each new situation. In Captivate 8 variables and literals became possible parameters as well, thus increasing that usability. Shared actions have some other important advantages over Advanced actions: they will appear in the Library like any other asset. Using the External Libraries feature this makes exchanging shared actions between projects very easy. The Usage button is available for Shared actions.

Variables that are not defined as parameters will be automatically created in a new project when you import the shared action using it. That is a real timesaver.  Some parameters can have only one type (variables, literals, states, audio clips) but most of them can have different types:  they can be a group, an image, a video, whatever you need in that project.

Less known is the ability of using a shared action as a template for the creation of an advanced action. That can be a great time saver. Learn about this feature as well in the webinar


Poster

You're welcome to particapte in this webinar, Here is the registration link:

Dare to Share

Be sure: you’ll walk away with many creative ideas!  As a plus: you’ll be working in the brand new Advanced Actions dialog box of Captivate 2017.

More is in a... hyperlink - Dropdown Menu

Intro 

In my last blog post I demonstrated how a hyperlink can overcome the limitation of states in Captivate, not allowing to add interactive objects to states.
In older versions of Captivate the widget 'Go to Slide' was available: a dropdown menu with slide names, useful to jump to those slides. That widget has disappeared, is not replaced by a Learning interaction (compatible with HTML5). 
Although this widget can be reproduced, using the Dropdown interaction, that solution has several drawbacks. The formatting of the interaction is limited (maximum font size is 14pt), and you would need a variable and a conditional advanced action with as many decisions as you have slides in the dropdown list.
A much easier solution can be found in this article, using hyperlink events. For a consistent behavior of the dropdown effect,  I also used Micronavigation

Hyperlink commands

The list with commands, opening the dropdown list in the Hyperlink dialog box is much shorter than the list with simple actions under the Actions tab. 
Of course the Web page is the first command, since that is what you expect to happen with a hyperlink. 
These commands are not available for a hyperlink event:
  • Continue: since the hyperlink event has no way to prevent 'Continue Playing Project' as is the case for simple actions, this is not that important
  • Return to Quiz: is meant for remediation, normally to be triggered by a Next button
  • Play Audio/Stop Triggered Audio: can always be done using an advanced action
  • Execute Shared Action: which is really a pity :(
  • Pause: can always be done using an advanced action
  • Exit: can always be done using an advanced action
  • Toggle: can always be done using an advanced action
  • Show/Hide TOC: can always be done using an advanced action
  • Show/Hide Playbar: can always be done using an advanced action
  • Lock/Unlock TOC: can always be done using an advanced action
  • State commands: Go to Next State/Go to Previous State cannot be done by advanced action, Go to State is possible.

For hyperlink events some commands have been put together in one dialog box, which is the case for the Slide command:


Example

Watch the movie: after the title slide the dropdown menu 'Go To' appears. When you click on that shape button, another shape wlll drop down. It has 6 hyperlinks, I left them underlined to emphasize their type.

When clicking on a hyperlink you'll be navigated to another slide which has a Back button to return to the Menu slide. The content slides are about the same subject as the previous blog post about popups and Close button. Of course it would be possible to have multiple slides in each 'chapter', and have only selected slides in the dropdown list.


Setup, variables and actions

Objects on Dropdown menu slide

The objects on the slide with the Dropdown menu are visible in this screenshot of its Timeline:

User variable v_start

The shape button SB_Menu (Caption 'Go To') is on top of the originally hidden Smart Shape SS_DropDown, and pauses at 2,6 secs, after all effects have been accomplishedTo mimick the behavior of a dropdown the Effect 'Stretch From Top' is applied to that shape. The effect starts at time 0 and has a duration of 1 sec. The arrow shape ArrowGoTo has some explanation and the effect EaseInFromLeft is applied. The second arrow ArrowDropDown has a similar effect, starting bit later, but that shape is not visible until the button SB_Menu is clicked.

One user variable was created: v_start. It will be used to store the frame number of the first frame of the slide with the dropdown menu. I learned from experience that effects are much more consistent when you use micronavigation instead of applying the effect by an advanced action. The content of the variable will be used to send the playhead back to the first frame of the slide, to have the time-based effect being played.

Events and Actions

1. On Enter (Dropdown menu slide): standard advanced action EnterDropDown

The back button on the content slides send the user to this DropDown slide, and the On Enter event of the slide is used to reset everything as it appeared first time: hiding the shape SS_DropDown, the arrow shape ArrowDropdown, and showing ArrowGoTo. Moreover the number of the first frame of this slide is stored in the variable v_start. This is the script:

2. Success event of the shape button SB_Menu: standard advanced action DropAct

This action will hide the arrow shape ArrowGoTo, show the shape SS_DropDown and its arrow ArrowDropdown and return the playhead to the first frame of the slide with the system variable cpGotoFrameAndResume which has 'Continue' built in. That way the effects for the dropdown menu and the arrow with explanation will appear as they are timed from the start of the slide.


3. Hyperlink events

Contrary to the situation explained in the previous blog post where the hyperlink event was used as Close button, in this case it doesn't matter that the playhead is always released when executing a command by a hyperlink because of the navigation to another slide. The command Slide was used, which opens the dialog box slide. Here the LInk is set to point to the correct content slide. In this screenshot you see the hyperlink setting for the navigation with the item 'Decor':

More is in a...hyperlink - Close button

Intro

A while ago I published a list with events able to trigger an action, whether it is a simple, advanced or shared action. Most commonly used events are the slide events, Success/Failure events for interactive objects, Question slide and Quiz events, D&D events. Both the hybrid rollover slidelet events (now deprecated because it is not supported for HTML output) and the Hyperlinks are 'outsiders' but can be very useful as I want to point out with this article (Closing popup or lightbox) and the next article (creating a dropdown list with Jump to actions, equivalent of the former 'Goto Slide' widget). 

Example movie

Watch this two-slide example.

  1. The title slide has a text hyperlink 'Next' to proceed to the next slide.

  2. The second slide has six shape buttons, each opening a popup (it could have been a lightbox as well, work flow is identical). In the popup information you'll find  the text 'Close X' which is a hyperlink  to close the popup.


States and Hyperlink

It is not possible to add interactive objects to a custom state: button, click box, shape button, Text Entry Box, all are greyed out. However it is possible to have a hyperlink within a text container, that will be active for all states of that container. This can be a welcome workaround. It is however not possible to have different actions for the hyperlinks in different states. Since the goal here was to close the popup, I created a shape as text container with 7 states as you can see in this screenshot:

The 'Normal', or default state looks invisible: there is no text in the text container with the exception of the text hyperlink 'Close X'. This was achieved by giving the text hyperlink the color of the background, the text container a Fill with Alpha=0% and no stroke. The other states have a Fill (Alpha=100%), they have information text with a visible color (also for the Text Hyperlink) and an image.

Actions

1. Next Hyperlink - Title Slide

The commands for Hyperlinks look a little bit different than the dropdown list in the Actions tab. For hyperlinks commands 'Go to Next Slide', 'Go to Previous Slide' and 'Jump to Slide' are in one dialog box:

2. Shape buttons to open popup - Second slide 'ActionProcess'

Look at the timeline of the second slide: all shape buttons (name starts with SB_) pause the slide at the same time, 15,5 secs. When triggering an action, the playhead should not be released, to allow clicking as many times as wanted, in any sequence on those shape buttons. The number of attempts is left at Infinite.

The only command to be triggered is to change the state from the default 'Normal' state to one of the custom states. The choice is yours: 

  • you can use a simple action (be sure to uncheck the option 'Continue Playing the Project'
  • you can use a one-line advanced action, create duplicates for each button; playhead will not be released
  • you can use a one-line shared action with two parameters (text container and state).

3. "Close X" hyperlink - in text container second slide

Beware: there is NO option to prevent 'Continue Playing the Project' when you assign a command to a hyperlink. That means that you cannot use a simple action, but have to use a standard advanced in this case.It is again the action 'Change state...to Normal.' 

Another difference for hyperlink events: the command Excecute Shared Action is missing. That is too bad, because if it had been available, one shared action would have been able to achieve both showing popup (with the 6 shape buttons) and close the popup (with the Hyperlink).

Conclusion

Hyperlink makes it possible to have an action in a state for an object, although it has to be the same action for each state of the object. You learned about the differences between hyperlink events and other events to trigger an action:

  • There is no way to prevent the playhead from being released if you trigger a simple action; use a standard advanced action.
  • You cannot trigger a shared action with a hyperlink.
  • Some commands have a different look: example is the Slide command (see screenhot in this article).





Force first view - Captivate 8

Intro

As a former college professor I don't like to push students/trainees to watch everything in an eLearning course. After all, you can watch without really seeing as well, that doesn't prove anything about the real 'learning' process. Apparently not everyone agrees with my personal opinion and again a question popped up on the Captivate forums in this thread: Force navigation upon FIRST view....

Problem

The course was totally linear, which is a requirement for the simple work flow I will propose here. To force the student the first time to have the slide played totally before being able to continue is simple: use a custom Next button, timed at the end of each slide, do not use a playbar but a TOC for navigation to previous slides. And set up the TOC settings to allow navigation only to already visited slides.
To improve the user experience, when he is coming back to an already visited slide, the Next button should appear from the start of the slide. That way he can skip part of the slide if wanted. The easiest way to solve that problem is by using an extra, replacement Next button. Because timing from start till end of a slide is the same for all slides, this can be a shape button put on the first slide that is timed for the rest of the project, always on top. It is not possible to use a shape button on the main master slide because such a button has no ID, which means it cannot be controlled, shown/hidden which is necessary for our use case.
The initial buttons can also be shape buttons and for a seamless user experience I'd recommend to use the same look for both the initial and the replacement Next button. However those initial buttons need to be individual buttons on each slides because not all slides will have the same duration, especially when they have VO attached as slide audio.

Example movie

Watch this movie to check the solution. To make the switch between the initial Next buttons and the replacement Next button clear I used a different style. Moreover I inserted a text container with two variables: the system variable cpInfoCurrentFrame and a user variable v_frames (see later) that are used to solve the problem. To navigate back to already visited slides, open the TOC with the red curved arrow top left. The TOC close button has a similar look. Refresh the browser to start the movie again. I didn't check AutoPlay, you'll have to click on the (ugly) arrow in the middle of the slide.


Events and Variables

I created one user variable: v_frames. The system variable cpInfoCurrentFrame will be used as well.
This variable will be used to store the current frame number when the user clicks on an initial Next button. Example: on the first slide the initialNext button Bt_One will appear at 5 secs and pause at 5.5 secs. When you click that button, you'll see that on the second slide the variable has the value '166' which is about the frame number of 5.5 secs at a speed of 30FPS. It is never totally exact (should be 5.5*30 which is 165, but index starts at 0, the exact number should be 164). But for the purpose it will be used, this is OK.

The used events are:
  1. Success event for the initial Next buttons: rBt_One, Bt_Two, Bt_Three, Bt_Four. I don't need a Next button on the last, fifth slide. Those button will trigger the same advanced action NextAction:
  2. On Enter event of slides 1-4 will trigger a shared action Show_Next:
  3. Success event for the replacement Next Shape button SB_Next executes a simple action: "Go to Next Slide"
  4. On Enter event of slide 5 (last slide) will trigger a simple action: "Hide SB_Next"

Advanced/Shared Actions

Advanced Action "NextAction"

This action, triggered by the initial next buttons on each slide except the last slide, has only two statements:
The frame number of the pausing point (which is where the action is executed by design) will be stored in the user variable v_frames. Then the Go to Next Slide command is done. 
Why did I prefer to use an advanced action over my favorite shared action? I don't need to change this action when applying to another button. You could create a shared action if you expect this action to be used in other projects because it is easier to transfer them using the library. In that case the shared action will not need any parameters. When you transfer it to another project, the user variable v_frames will be created automatically. That is certainly an advantage!

Shared Action "Show_Next"

This is the action that does the trick! It is a conditional action: 
When a user enters a slide for the first time, the frame number of the first slide frame will be greater than the frame number stored in the user variable v_frames. That user variable has in that case the frame number of the Next button pausing point that was on the previous slide. But if the user comes back to this slide, v_frames will store a frame number of a similar Next button pausing point on a later slide. In that case the condition in this shared action will be correct, v_frames will be greater than the cpInfoCurrentFrame. The appropriate button is shown or hidden. It is necessary, for an unknown reason (was not the case in CP6, when I blogged about toggle buttons), you also have to enable/disable as well. This is probably due to the buttons being in exactly the same location, but it was not necessary in a previous version. 
I defined only two parameters in this shared action:
It is not necessary to define the user variable v_frames as a parameter because it is always reused. It is a pity that objects have always to be a parameter, because in this particular case it would have saved some time to be able to deselect SB_Next (the replacement Next button, timed for the rest of the project) as a parameter. Maybe in a future version? Some will prefer advanced actions and duplicates to be edited for each button but remember: multiple instances of a shared action do not increase the file size, whereas multiple duplicates of an advanced action do increase file size. And I like the presence of the shared actions in the Library, and easy way to use them in other projects.

Conclusion

I love to solve this kind of problems, trying to find an easy solution that can be reused over and over again. If you ever are stuck with such a problem, please contact me. I am available as a freelance consultant, and having taught for many years in college, be sure to get some training on top.






Reset Knowledge Slide

Intro

This post is for Captivate versions before 9. In version 9 real knowledge slides are introduced. In this post the workaround to use normal question slides as knowledge check slides is treated.

Not a shared actions post this time (still busy with the third post), but a quick tip describing a work flow that I already posted multiple times on the Captivate forums. It is an answer to this question:  "How can I reset a question slide immediately, if it is a pure knowledge check, no scoring". 

Principles

You are probably aware of the fact that the function 'Reset' in Captivate is only possible for the whole quiz, and has to be triggered by using the Retake button on the score slide. There is no simple way to reset one question, once it has been submitted. Before submitting it is possible to Clear the answer by the Clear button. For more details about question slides and score slide, check some of my previous posts:

Question Question Slides - part 1

Question Question Slides - part 2

For knowledge slides, where scores don't have to be saved, you will not want to insert a score slide. But if you can cope with the fact that all answers will be cleared also for other knowledge slides in the file, you can create a 'Reset' button for a slide, without having to show the Score slide. 

The Retake button will appear on the score slide if the attempts on quiz level are not exhausted. The attempts are tracked with a system variable cpQuizInfoAttempts.  That variable is incremented when a new attempt is started. 

The idea for the Reset action is simple: navigate the user to the score slide, and immediately back to the slide where he was answer in knowledge question. And that slide will be reset!

Example Movie

Watch this movie, to see the functionality of the Reset button. On each question slide you can use the two-step Submit work flow. Nothing will happen, you'll be able to Reset the answers as many times as you want. You need to click the Next button to go to the next Question. 

Setup Step-by-step

  • Edit the Quiz Preferences, set the number of Attempts to Infinite (or to a high number), it is not really necessary to show the Retake button. Be sure to hide the playbar, to check 'Show Score slide...' although you'll never show that score slide to the user, you need it. Do not allow Backward Movement. Check the two images below.
  • With the setup used in the example, you'll need to have the Next button visible. Do not drag it under the Clear button as I often advice to avoid confusion with the Submit button. 

  • You can use any type of questions, with one exception: Hotspot. Problem with Hotspot is that when the user clicks on the Reset button, it will be considered as a click on a hotspot (and the animation will appear). You see in the example that I even used partial scoring for some MCQ-multiple answer questions.

  • The setup for the question slides: I kept the attempts to 1, but changed the actions both for Success and for Failure to 'No Action', hence the need for a Next button. If you want, you can keep the 'Go to Next Slide' as Success Action, but if you have have partial scored slides, you have to know that partial correct answers will trigger the Success action, which means that the user will not be able to reset and correct his answer.

  • Create a shape button as Reset button. In the example movie I used one of the images from the theme as Fill for a rectangle shape with no stroke, to have a look that is similar to the embedded quiz buttons. To have this button on all the question slides, you can either put it on the Quiz Master slides, or put it on the slide before the first question slide, make it invisible (Properties panel), time it for the rest of the project. I choose for the second work flow, because the shape button gets an ID, can be shown/hidden as wanted. It is not possible to put it on the first question slide, but I made it visible with the On Enter action of the first question slide. More information about buttons on question slide is to be found in a previous blog post: http://blog.lilybiri.com/want-a-button-on-question-slide-in-captivate.

  • The advanced action triggered by the On Success event of the button Bt_Reset is pretty simple:
    • jumps to the Score slide, which will increment the variable cpQuizInfoAttempts, start a new attempt, clears all answers
    • returns to the original slide, using the system variable cpInfoLastVisitedSlide
  • To avoid the user seeing the score slide, you'll need at least one slide before the score slide, and prevent navigation to the last slide. In this case I added one slide, that has no navigation button. Because the Reset button is still visible, I use the On Enter action of this slide to hide it.

Tips

  • If you plan to use this action in multiple files, create a shared instead of an advanced action. It is easier to reuse a shared action because it is in the library which you can use as an external library.

  • This type of knowledge questions will probably be between content slides. You have to be aware that all answers are reset with each Reset button on one question slide. Maybe better warn the user if you allow free navigation with a playbar, a TOC or custom buttons.