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.






Theme Colors

Intro

In my previous post I explained the work flow to create a custom Theme Colors palette, starting from an Adobe Color palette (ase). Theme Colors palettes can be applied to any theme, they are stored in the Layouts folder of the Public documents, they are not project specific. This article will show the consequences of applying a new Theme Colors palette to a theme. As you probably know a theme has three principal components: object styles, master slides and skin. 

Moreover Captivate 8.0.1 allows to apply theme colors to a bunch of learning interactions (not to all yet). That is a big improvement, because most of those interactions have their own themes and it was a lot of work in former versions to edit colors in the interactions to match the theme of the project. 


How are Theme colors used?

You can customize one of the existing themes by changing the Theme colors in the first place, then adding objects, changing styles, master slides etc. For a totally new theme you will probably start with the Blank theme. Maybe in a third article I will offer some tips about using Blank theme. In this post I will only talk about the other themes, and the way a new colors palette will interact with them.
In the dropdown list under Select Theme Colors, you'll see on top the category 'Custom Theme Colors' and to the bottom 'Pretest Theme Colors'. 

For each included theme you'll find two Theme color palettes in Captivate 8: one with the same name as the theme (in 'Preset Theme Colors'), and one with that name followed by Shade (in 'Custom Theme Colors'). Example: Flat color palette, and Flat Shade color palette. Only the Blank theme is an exception. 

When you open the Theme Colors window, and choose Customize for a palette, you'll see 10 colors. A name has been given to each color, but those names are misleading, as I will explain. 
I prefer to label them color 1-10. Why? What do you expect when seeing a name like 'Title', 'Sub-Title', 'Slide BG', 'Fill', Stroke? I naively (or is it my engineer's mind) supposed that the first color (Title) would be applied to the Titles on the Master slides, the second color (Sub-Title) to the subtitles on master slides, Fill and Stroke to shapes or other objects, Slide BG to the background of the slides (project background). But when I explored the themes, included with Captivate, I discovered that this is almost never the case :). If you download this file, you'll see two tables: one for text styles and one for the three states of Shapes. Some conclusions:
  1. Font color of the default Title Smart Shape Style which is used on the Master slides is the first color 'Title' in themes Flat, Green, Nimble, White and Woodgrain. Blackboard uses Text 2 (Color 4), Clean Blue, Clouds and Vivid use Skin 2 (Color 9), Half Tone uses Stroke (Color 6). 

  2. Font color of the default Sub-Title Smart Shape Style, also used on Master slides is never color 2 'Sub-Title' except for the Flat theme. All other themes use another color.

  3. Font color of Caption text uses quite a myriad of colors: Stroke (color 6), Text 1 (color 3), Sub-Title, Sub-Title tint 5 (color 2 - see tints later on), Title (color 1), Skin 2 (color 9).

  4. Same for the three font styles on Question slides: Title, Question and Answer.

The default Shape style in the Object Style Manager has three states (Normal, Down and Rollover) because every shape can be used as a button. In the second table you'll see Stroke color, Font color, Fill color (Solid or Gradient, and Alpha) for the three states. Only the Font color seems to remain the same for each state - not always a good choice (sometimes unreadable because of change in fill). 

Why did I create those tables? If you change the theme colors, some of the object styles, master slides and skin will change based on the new colors and on setup of the colors in the original palette. This means that the same custom color palette will create a different look, depending on the theme for which it is used.  Not all object styles are using theme colors however, some will not change color: this is the case for the new Success/Failure/Hint smart shapes that you can use to replace the captions for interactive objects and question slides (Preferences). Of course, the old Success/Failure/Hint captions cannot apply theme colors neither, but for the shapes this is possible without having to create custom captions in a graphics editor. 

Example

I created the color palette  'Lilybiri' based on my logo (see previous post). Browse this Picture Gallery. You'll see one slide, with that palette applied to the White, Vivid, Flat and Halftone Themes. Watch the colors of the master slides, Title, Subtitle, Caption and the 'rollover' state of an inserted shape button. You see that the result is totally different.

If you want to change just the theme colors for an existing theme you have to check the master slides and the object styles. I would have preferred to have more consistency in the use of the theme colors in the themes. Especially in this version, because to create a custom theme you need to start from an existing theme, certainly for responsive projects. 

Tints 

In the first article I already explained that Captivate will create 5 tints for each of the theme colors, besides the base colors of the palette. Some of those tints are used in the existing themes: on master slides, in object styles and in the skin.
Contrary to the base theme colors, which I indicate now with codes 1.0, 2.0 .... 10.0, you do not have any control over the way those tints are created. I use code 1.1, 1.2 ... 1.5 for the tints based on color 1.0 in my code system. If you apply a custom theme colors palette, Captivate will create those tints, but my curious mind wondered "HOW"? Because the term 'tint' was used, I suspected that looking at the HSB code would be a better idea than the provided Hexadecimal or RGB codes. HSB is used in a lot of Adobe applications to indicate Hue, Saturation and Brightness. I have now a complete table with HSB-codes for all provided theme color palettes. I didn't include it here, it was meant to discover the logic of the tints creation. And there is some consistency, my conclusions (see also the image below):
  1. For gray colors (like 4D4D4D, E6E6E6...) you'll see that Hue and Saturation remain equal to 0 and only the Brightness will decrease from tint 1 to 5.  Same of course for Black (000000) and White (FFFFFF).

  2. For normal colors the Hue remains constant (there are small variations) for all tints.

  3. First tints (1-3 or 1-4) keep high Brightness but start with lower Saturation that will increase

  4. Last tints (4-5 or 5) keep Saturation of previous tints but decrease the Brightness

Depending on the default Theme you are using, the tints can be slightly different, but not in the same way as what I showed about the style colors in the previous point.


Learning Interactions - Theme Colors

Some learning interactions do have their proper themes. Now it is possible to apply the colors of the active Theme Colors palette to the interactions as well. However, they are not applied automatically, you need to use the Custom button. There are two possible work flows:

For the (older) interactions Accordion, Tabs, Process Circle, Pyramid Stack, Timeline, Circle Matrix, Pyramid Matrix, Glossary, Word Search and Certificate

  • The interaction themes are at the left, with default theme selected; use the Custom button at the bottom

  • Default Colors are activated, and you could customize them using the Customize button, but then you'll see the old cold dialog box, which has no link to your theme colors

  • Click on Theme colors: the preview will be changed immediately, and the Customize button now appears under Theme Colors

  • When using this customize button, you'll see the Theme colors with their tints when changing a color.

For the new games Catch AlphaNum, Jeopardy, Memory and Millionaire

  • After setting up the game, go to the second screen (mostly with an red arrow at bottom right) to Customize

  • Look for the button 'Color settings': in some games it is at the top, in other (like in the screenshot) at the bottom

  • Same work flow there: if you click on Theme colors the present color palette will be applied

  • Customize becomes available under Theme colors instead of Default colors and will show you the Theme colors palette with all the tints.

The other interactions do not yet offer the possibility to use theme colors.

Tips

  • Be careful when creating a custom color palette to apply to an existing theme: look at the two default palettes provided for that theme and try to assign bright colors to the same color number as those palettes, same for darker colors. Maybe the table I offered with the use of the theme colors in all themes can help.
     
  • Check the object styles after applying the new color palette, the easiest way is in the Object Style Manager; do not forget that shapes have colors for the three states

  • After checking the object styles, check the master slides: objects and background will have changed colors as well. If you use shapes for Success/Failure/Hint messages, check their style because they will not be changed to the new color palette.

  • I didn't mention the skin, but playbar as well as TOC settings will also get color changes when applying a new color palette, check them as well

  • When using learning interactions, try to change to Theme Colors if they offer that possibility, and double-check the result that you can edit with the Customize button.





Colorful 2015 with Adobe Captivate

Intro

Color management in Adobe Captivate is improving slowly but steadily. Too bad: the Help documentation is not offering much explanation about color workflows at all. Have a look at what is explained about enhancements in Captivate 8.0.0 and 8.0.1 and tell me if this is sufficient? It is not for me, and I have a 25 years history as a Photoshop trainer. Do you know about the relationship between the Swatches panel, the Color schemes that appear in a lot of dialog boxes (not only for Fill/Stroke, but also in learning interactions), the Theme colors and the colors applied by default in the Object Style Manager, Master slides and Skin? Since many months I'm trying to figure out a good practice using the enhancements in Captivate 8. In previous versions I created color swatches in the scratch area (outside of the stage) to use with the color picker in order to achieve a consistent color use. That is at the least cumbersome compared with color management in applications like Photoshop and Illustrator.  Since October 2014 for those CC applications I'm able to create and use my Adobe Color palettes (ase), stored in the cloud, on any device and system. Adobe Color is installed on my tablets and smartphone, allowing to create color themes at any moment, often from a shapshot. That new sharing feature (Libraries) is not available (yet?) for Adobe Captivate. 

In this first article I will try to find a way in the jungle of Captivate's color terminology and explain my present work flow to manage colors in a project by creating a custom theme color palette, starting with an 'ase' file created in Adobe Color. Let me know if you find this useful, please? In a second article focus will be on the use of Theme colors:  in object styles, master slides, skins and how to use them in (some) learning interactions (new in Captivate 8).

Swatch Manager

In the help you'll find a lot of screenshots where it is labeled 'Swatches'. But in CP8 title was changed to 'Swatch Manager'. I'm working in Expert UI, and have that panel always available in the right docking station, and make it floating when necessary. If you prefer the default newbie UI, there is a video in the Help that explains how you can open this panel: http://helpx.adobe.com/captivate/using/whats-new.html

You'll see a pretty big color palette in the manager: 8 rows with 15 color/tints, starting with 12 gray tints. When you hover over a color you'll see its Hexadecimal code, top left. To see RGB or HSB codes of the existing colors is a lot more complicated. When a color is selected and you click on the color wheel on top, it is not the selected color that shows up (as I expected) but always the gray color #404040. There is no direct way to see other color codes of the swatches (like HSB, RGB), contrary to the Color Dialog box, that will show you the hexadecimal code and RGB (not HSB) when selecting a color and clicking on the Color Wheel.

If an object is selected on the stage, you can use this Swatch Manager to apply one of the swatches as Fill or as Stroke color. For a text container (shape or caption),  in text editing mode, you can use it to apply a swatch as Text or Highlight (background color behind text) color. That is the goal of the radio buttons in the third row. Honestly, I never use that work flow, if you accidentally choose the wrong radio button, you'll change the Fill instead of the Stroke color. 

The color picker and the color wheel (that will show HSB, RGB and hexadecimal code) on top (first row) are meant to add individual swatches. You will be asked to give a name to a new swatch, the default swatches have no names.

TIP  

When you customize the palette in the Swatch Manager, it becomes available for all open projects, it is not project specific. BUT!!! A big problem is that you cannot save the swatches with a project at all. Whenever you reopen the project, the default swatches palette will appear. Even when you put a PC in Sleep mode, after wake up the custom swatches palette has disappeared and you have to load it again. This is the main reason why I never use the Swatches Manager to edit colors in a project as I mentioned before, but use it only to define a Theme Colors palette. 

The buttons in the second row are the most interesting!


Captivate and Adobe Color

I am using the Swatch manager to create a custom color palette, starting with an Adobe Color scheme. The buttons at the second row, from right to left, are:

  • Clear: this will delete all color swatches in the panel - not really necessary if you use Load

  • Reset: will revert to the original 8x15 palette, any added individual swatch, or loaded custom palette will be cleared

  • Save: the present palette will be saved in the Adobe Color format, extension 'ase' (Adobe Swatch Exchange). The default name will be the project name (you can change the name of course); this can be useful if you created a custom color palette in Captivate, for import into another Adobe applications like Photoshop.

  • Load: allows you to load an 'ase' file created in another Adobe application like Adobe Color. Captivate also accepts 'aco' (Adobe Color, have more information like Pantone color) files but I seldom use that palette format. You get a warning that the existing palette will be replaced by the new, but can still revert to the last option:

  • Append: will add color palette described by an ase or aco file to the existing colors.
An Adobe Color ase file will typically have only 5 colors. There are a lot of tutorials around about using Adobe Color (formerly Kuler) and you can install it for free on any device or use it right from the web site. Just an example: you can create a color scheme from a logo in a quick way. The color scheme imported here into the Swatch Manager is based on my company's logo.
Adobe Color is part of the Creative Cloud,with a CC subscription you'll have access to your personal color themes in the cloud from a lot of Adobe applications without having to save/load it using the ase file. Crossing my fingers that in the future this will also be possible for Captivate.

In most cases, 5 colors will not be sufficient for Captivate to have a complete color scheme. The reason is that Theme color palettes in Captivate have 10 colors (see later). 

Add swatches

Second step in my work flow is to extend the palette to more colors (not necessary 10), that match the existing scheme. This can be done, swatch by swatch,  with the color picker or with the color wheel. Very often I will add white or a very light tint of one of the existing colors (using HSB), and a very dark one or black (if it is not yet present). A similar approach is used by the Tints in Theme colors (see later). Depending on the style chosen for the Adobe Color Theme, maybe you'll need a very contrasting color as well.
In this screenshot you'll see how I used the green color to create a very bright one by keeping the Hue (H in HSB) but increasing the Brightness (B) to 100%. I added 3 swatches in total to have a palette with 8 colors.

Color dialog box

The color dialog box has 3 different looks, depending on the buttons on the top. The active look can be detected because that button will have a very thin black line surrounding it (maybe you'll have to get closer to the screen to see it). Those looks are, from left to right:

  • "Theme Colors": this look will appear by default if the selected object's Fill (or Stroke) has a default Object style using a Theme color, or if its color has been applied from the Theme Color palette.
    The top row shows the Theme colors (see later), under them you'll find 5 extra tints for each theme color. I regret that it is not possible to see the color code of any of the colors directly, it would be great if they showed up on hovering over a color (as hexadecimal code) or even better if you could have full info in the color wheel when clicking on a color. That is not the case (yet?). When exploring, I found that all tints have the same hue (in HSB), different Saturation and Brightness.
    At the bottom you'll find the colors as they were last used, last used color is the first in that sequence. Not that useful (my personal opinion). That row is dynamic, changes whenever you use another color.


  • "Swatches": this look will will appear by default if the selected object's Fill (or Stroke) color has been applied using the Swatches Manager.

    You will see the swatches in the upper section, and the 'last colors' palette at the bottom

  • "Color Wheel" will never show up by default. It allows you to choose a different color, either by picking it (click first on the right vertical bar to choose a hue, then you can change saturation and brightness in the big rectangle) or by entering a Hexadecimal or RGB code. Contrary to the dialog box for adding a swatch,  HSB is not available here. It also shows the last used colors.

  • "Color Picker" is the last button, no look on itself. It allows to pick a color somewhere outside of the dialog box. While moving the picker you'll see the Color Wheel showing up in the dialog box.

A similar Color dialog box shows also up for the gradient stops when editing a Fill gradient, when customizing colors in the Theme Color palette, and in a reduced edition when customizing colors for Learning Interactions.

Theme Colors 

This new feature in Captivate 8 allows to change quickly the look of an existing theme (object styles, master slides, skin). Next week I will talk more extensively about those changes, because not every style will be edited automatically when applying a new palette of theme colors. My work flow, after having imported and extended a color scheme in the Swatch Manager, is to create a custom Theme color palette based on those colors. With that work flow, the color dialog box will always appear in its first look and provide besides the original Theme Colors a set of 5 extra tints for each theme color. Although there are by default 10 colors in such a palette, you can assign the same color more than once. More details about the use of the 10 colors will be provided in the next blog post.

Contrary to the color schemes created with Adobe Color - ase file format - the Theme Colors are saved as XML files. You can find them in the Layouts Folder (under eLearning Assets in a public folder). The XML file is pointing to the RGB codes as you can see here:

You could create a custom theme colors palette by creating new XML files, but you'll need a more exact number for RGB in that case then the one provided in Captivate. An alternative is this work flow:
  • Open the Themes list with the big button on the top bar

  • Click on the Theme Colors button, bottom right

  • Theme Colors dialog box, in its Basic view only gives you the dropdown list with color palettes


  • Click the Customize button (bottom right) to open a hidden part of the Theme Colors dialog box (with Basic button you can hide that part again)


  • You'll see the 10 colors, and clicking on a color will open the Color dialog box in its "Swatches" look. You can now customize that color. The names of the colors are not really relevant. Some colors are not really used in most themes but that is another story, which you'll discover in a later blog post.

  • When you are ready, first change the name of the theme: blue text 'White' can be edited; there is no Save as (at least I couldn't find it).

  • Click the Save button: custom Theme Colors palette is created and immediately applied to the present project. You'll find its definition in a XML file with the same name in the public folder I showed before.
From now on you can use these theme colors for all editing. In the next blog post I'll explore how those colors are used in the current themes in Captivate, and how you can apply them to learning interactions. That post has now been published.

Summary

If you made it up till this paragraph, maybe you'll be confused by the Captivate Color Jungle?  Here is a short summary of the described work flow, to create Theme Colors from a custom Adobe Color scheme:
  1. Import the 'ase' file in the Swatch Manager, using the Load button

  2. Add more swatches to the default 5 colors of the scheme, using Color Wheel or Color picker in the Swatch Manager

  3. Save that extended scheme as an 'ase' file (because custom color schemes in Swatch Manager cannot be saved); that way you can reload it if necessary

  4. Open the Theme Colors dialog in its extended version, customize the 10 colors.

  5. Change the name of the default theme

  6. Save the custom Theme Colors palette

Thanks for your patience, please leave your comments! May a lot of your wishes be fulfilled in 2015. I have some for Captivate as well :)

Custom Hotspot questions in Captivate 8

Intro

A couple of weeks ago I presented a session 'Enhance Effectiveness of Quizzes in Captivate 8' at DevLearn 2014. One of the subjects that I barely was able to tackle due to lack of time, is the creation of custom questions. You'll find several blog posts where I created custom questions using standard objects, widgets and learning interactions. On the forums I often suggest to replace the default hotspot questions by custom questions. And finally find the time to explain why I recommend this. The success of the Quiz blog posts and of this BYOL session at DevLearn make me wondering if an e-book with focus on Quizzing would be welcomed by the community? Looking for comments on that plan.

Why?

The default hotspot question slide has some limitations. Here are the ones I find most frustrating:
  • hotspots are always rectangular
  • it is not possible to have partial scoring
  • you cannot add shape buttons to that type of slide, because any space outside of the correct hotspots causes failure
Thanks to my favourite Captivate object, the shape button, it is pretty easy to create a scored custom hotspot question with
  • freeform hotspots
  • partial scoring, that can be reported to a LMS by SCORM
  • allowing to add shape buttons for more functionality

Why not?

What are the disadvantages of a custom hotspot question slide compared with the default hotspot question slide;
  • custom question slides always take more time (although shared actions can help), especially if you want to add all question functionality (Clear, Retake etc...)
  • if you like the animations that appear on clicked hotspots, they are not added automatically in custom hotspots, there is of course a way of showing the clicked hotspots
  • although the total score will be correct when using partial scoring, some quizzing system vars will consider each correct hotspot as being a separate question; you have to be careful when using a default score slide, in which you show number of questions/correct questions
  • it is not possible to use custom questions in a question pool

Example

Watch this movie. After the intro slide you'll see two Hotspot questions. Both questions have partial scoring. The fourth slide is the default score slide, to show how each correct hotspot is considered to be a question as is the case with all scored objects. To remediate, I added a custom score slide as last slide (use Continue button on the 4th slide). I didn't create a Reset or Retake situation. If you want to replay, refresh the browser window. Good luck!

Concept Hotspot Question - version 1

This question slide has one big shape button behind four shape buttons that indicate the form of the four countries to be clicked. The big shape button when clicked, will track a wrong click. I used 3 variables for this question:
  • v_attempt: number allowed attempts; will be reused for second question, number is assigned by On Enter action
  • v_counter: counts the clicks, to be compared with v_attempt;  will be reused for second question, reset to 0 by On Enter action
  • v_wrong: counts the mistakes, is not reset because it will continue to increment on second question, is used on custom score slide.
Here you see the timeline of this slide. The correct hotspots, shape buttons, have been duplicated to create the covers that are normal shapes with a texture fill. 

For the incorrect hotspot (shape button) I created a conditional advanced action with two decisions:
  1. "Always" is a mimicked standard action, self-explanatory. Because this hotspot can be clicked multiple times, the last statement is necessary to place the playhead one frame back, in the active portion of the shape button.

  2. "ShowNext" checks if the number of allowed attempts is reached, and if that is the case will hide all the hotspots and shows the Next button.

For the correct hotspots, that allow only one click, I created a shared action with two decisions

  1. "Always" is a mimicked standard action, self-explanatory. The parameters are highlighted.

  2. "Checker" is similar to the second decision for the incorrect hotspot. Parameters are highlighted.

The On Enter action for this slide is a standard shared action that resets the value of v_counter and v_wrong to 0 and assigns a value to v_attempt.


Concept Hotspot Question - version 2

I will not explain this question as extensively as version 1 (maybe in a planned book about Quizzes). It has multiple incorrect hotspots, and uses an extra variable v_scorehot. Try to figure it out. As a tip, this was my timeline:

Comments?

As always I welcome comments about this example. As mentioned in the Intro, I would also like to know if you'd appreciate a book explaining the design, the tweaking possibilities and custom questions for Captivate quizzing.

System variables in Captivate 8/9

Intro

Captivate 9 users: there is no change about system variables in this version, you can download the same table.

The post 'System variables in Captivate 6' has been very popular, probably because it offers more details than what can be found in the documentation of Captivate itself. Later on I mentioned some new variables in Captivate 7 in the post New Features in 7.0.1.
Time to upgrade the table for Captivate 8, you can download (for free) the pdf from here. The document is encrypted to discourage abuse. You will be able to print it at low resolution (150dpi) and it can be read by a screen reader. 

The table was first proposed at the Adobe Learning Summit presentation about Advanced and Shared Actions. 

New

Captivate 8 only added two new variables:

  • cpInfoMobileOS in the category 'System Information': is read-only and detects which device is used, returns a number or a case-sensitive string

  • cpInfoGeoLocation in a new category 'Mobile': returns the geometric location when using a device on which such detection is enabled. This is the first variable that has not one but three components. Latitude, Longitude and Accuracy are numbers. There are several tutorials around, like this one.






Custom Short Answer Question

Intro

This is not the first time I publish about creating a Custom Short Answer Question. The default type in Captivate is pretty limited:  the user should enter exactly the same answer as the defined correct answer which is almost impossible with this type of question. The normal validation for such a question is to check if some keywords are present, and eventually if some other keywords have not been used. My previous posts were created with Captivate 5 for publish to SWF only:

Widgets were meant for SWF-output only, including the widget by Jim (this one, he has some widgets that are also compatible with HTML5). Since Captivate 7 the TextArea widget got a companion, the 'Scrolling Text Interaction'. Don't be confused by the name, it is essentially the same widget, but compatible with HMTL5 output. 

This week I accepted another challenge from a Captivate user on the forum, concerning the use of TextArea (or Scrolling Text) with a more complicated condition than the one I described in the previous blog posts: How to verify that a variable "does not contain" a value? As you probably know, the operators in the IF part of a conditional action are bit limited: there is an operator 'contains' but no negative counterpart. My first reaction was to propose the use of JS, but my intuition told me I should also try with advanced actions. This post will explain how I solved that problem, and I was very happy when the King of Javascript in Captivate, Jim Leichliter posted his alternative with JS in the same thread, scroll down to find the script.

In this post I will explain the conditional advanced action, and also point to another well-hidden gem, only in Captivate 8: the Captivate team has now embedded the variable control in the Scrolling Text Interaction! Don't tell that they are not listening to users :) What was only possible with the extended TextArea widget by Jim in previous versions, can be done with the supplied Scrolling Text Interaction.


Challenge

The description of the problem: " We are basically validating the content in the widget and showing appropriate feedback. Since the user can enter anything in the widget, we are only tracking the keywords. To be precise, we are trying to create an Advanced Action like this, where the text entry should contain the words Organizational, Behavioral, and Managerial but not the words Transformation and Non-Compliance. If the entry contains any of the "illegal" words, then incorrect feedback caption should appear."
Translated: when the answer is submitted, the conditional action should show a Positive feedback when:
  • the three first words are included in the text
  • the last two words are not included in the text
If those conditions are not all fulfilled, the Negative feedback should be made visible.
Because of the missing operator 'does not contain' this cannot be done with one decision, one IF combination using AND, which explains why the user was stuck.


Solution 'Divide et Impera' 

After a long career as professor, this has become one of my mottoes: make it simple by splitting up the problem:
  1. Check first if all the conditions are fulfilled and store that result in a Boolean variable. There are a lot of Booleans in Captivate: variables that can have only two values, No/Yes, 0/1, False/True. I will mostly choose for the 0/1 combi. I created a user variable v_TA_OK with a default value of 0 (meaning all conditions are not yet OK)

  2. Show the appropriate feedback based on the value of that Boolean.
This was possible because of the typical way Advanced actions are executed in Captivate: 
  • all statements are executed in sequence and
  • all decisions are executed in sequence
  • the action is not stopped when a positive condition is met

This has led to a conditional advanced action with three decisions.


Movie

Watch this movie, created with Captivate 8, customized theme 'Flat', using custom shape buttons (one is a freeform shape) with three states and the new Scrolling Text Interaction.


Advanced actions - variables

Variables

To make the question more universal, I didn't use literals for the words, but stored them into variables. These variables were created:
  1. v_one, v_two, v_three to store the words (can also be more words in one variable, but they'll have to appear in that sequence) that have to be included in the answer

  2. v_notOne and v_notTwo for the words that are forbidden in the answer 

  3. v_Answer to be associated with the TextArea or Scrolling Text that will store the value typed in the answer

  4. v_TA_OK: the Boolean variable explained above; default value = 0, will only be set to 1 if all conditions result in correct.

  5. v_null: an empty variable that is needed to create conditions for the other advanced actions (as the ones that check if all word fields have been filled); I will not explain those actions here; more info: Where is Null?

Conditional action Check_Short

This action is triggered by the Submit button on the Short Answer slide. This was the answer to the problem presented at the beginning. I will not explain the other advanced actions like the one triggered by the Reset button or the different actions On Enter for slides to reset the situation to normal. The action has 3 decisions:

OKWords

This decision checks if all the imposed words are present in the Short Answer, using the operator 'contains', with AND combination. If that is the case, the Boolean v_TA_OK will be set to 1.

NotOK

The not-allowed words are checked with this decision, using again the operator 'contains' but this time in an OR combination, because even if only one of those words is present, the negative feedback has to appear. If any of the words appears, the Boolean v_TA_OK is reset to 0. It is very important that this check only occurs after the first decision! After this second decision (in this case) all conditions have been evaluated and the Boolean variable v_TA_OK has its final value, will be used in the last decision 

FBack

Only this last decision has also an ELSE part, as you can see in the total view of this conditional action:

As I explained in the last slide of the movie, because of the stack order, where an Interaction always is on top even though it is not on top in the Timeline, I had to hide the Interaction to be able to show the Feedback groups, because they were in the same location. Here is the Timeline of this Short Answer slide:

You see that the Interaction (indication is Widget on timeline) is not on top. The Next button is not on this slide, but on the first slide and timed for the rest of the project. That shape button is hidden/shown when necessary.


Tips

Variables are case sensitive, and contrary to validation of a Text Entry Box it is not possible to get rid of that case sensitivity for variables associated with this interaction. If necessary you'll have to create more decisions.
I wanted to emphasize the importance of sequence by this blog post, and the fact that Captivate will always evaluate all conditions/decisions. This is not always the case in normal programming languages. Trying to explain:
  • The first decision is positive, variable v_TA_OK will be set to 1, but there will not be ending of the condition
  • If the first decision is negative, variable v_TA_OK will remain at 0, no need to include an ELSE part.  This means that the variable can never be set to 1 anymore, but the second decision will nevertheless be checked by CP.
  • If both negative words are not included, nothing happens with the second decision, v_TA_OK will keep its value 1 or 0 depending on the result of the first decision, because there is no ELSE part.
  • If one of both negative words are included, the second decision will reset v_TA_OK to 0, whatever its value was at the end of the first decision
The new possibility in Captivate 8 to change the value of the variable associated with the Scrolling Text Interaction and have this displayed in the interaction is important if you remain on the same slide. Contrary to the extended version of Jim's TextArea widget, the rule that variables for each interaction are cleared when you leave the slide is also applying to the Scrolling Text. If you want to keep value of the variable you have to transfer it to another variable.




Captivate 8 - First Adventures

Review? Not really...

Lot of well-known Captivate users have already blogged about the new features in version 8 of Captivate, released this week:  Michael Lund and Jim Leichliter are not the only friends who published their review. If you are a regular visitor of this blog, you'll know that I don't want to talk about features before having been able to explore the final release and that I'm used to offer an article with at least one example movie to demo what I try to explain. Some will be disappointed that the included movies are not responsive projects, but a good old SWF's (sorry Mac-users). You'll see some of the less-talked about new enhancements in Captivate 8. 

Focus on?

Watch this first movie. Focus in this project was on:

  • new possibility to customize theme colors: I edited one of the new themes, based on a Kuler palette (imported in the Swatches) panel; for this palette I used the colorful new box-shot  of Captivate 7 as resource

  • the ability to save and reuse custom shapes: for the shape buttons I used a custom shapes that are now available to me in the shape library

  • creating Normal, Rollover and Down states for Shape buttons and save those states in one Shape button object style: all buttons in the movie are shape buttons with 3 states; I used two shape button object styles

  • shared actions: being able to define variables and literals as parameters

  • shared actions: dragging them from the Library onto slides or interactive objects to open immediately the Parameters dialog

  • shared actions: being able to exclude variables, literals as parameters; discovered some nifty tricks!  Maybe I'll offer them in the future

  • new character sets
The project is showing a typical dashboard, that allows branching to different parts of the movie. For the sake of simplicity each part is only one slide in this case. The number of visits to each part is visible when returning to the dashboard. I hope you'll also discover the total number of visits to all parts in that dashboard (red number). When all parts have been visited, something happens on the dashboard. If you want to play again, you'll be able to reset at the end. There is no playbar, no TOC.

Movie

Actions & Variables

Five user variables were created:

  • v_counter: tracks the total number of views of chapters
  • v_ch1: tracks the number of views of the first chapter
  • v_ch2, v_ch3 and v_ch4: similar for the three other chapters
Tip: To keep it simple I limited to four chapters. If you want to store the shared actions in a Library to be used in future projects, it is better to have the maximum number of chapters you'll ever use.

As you can see in the Library, I created/used three shared actions. Only the Reset functionality uses an advanced action (not described in this article).


1. FirstViewBt

This action is triggered by the four shape buttons that appear the first time on the dashboard slide. It is a standard action, that will replace the button itself by a second version, navigates to the first slide of the chapter to be visited, increments both the general v_counter and the specific v_chx variables. The advanced action (before saving as shared action) is visible in this screenshot:

When saving this action as a shared action, the dialog box looks different from Captivate 7:

Watch the icons in the first column (fuchsia colored rectangle): before entering the description, this column will have the Warning icon for the items that are automatically defined as parameters: objects/groups. In this example 3 objects had that status: the buttons (BullletRight_1 and Sec_1), the first slide of the chapter. However now you'll also see variables and literals as possible candidates for parameters! They are normally indicated by a check mark (green) in the first column. In this example: v_counter, '1'(literal used in Increment statements) and v_ch1. To turn such a candidate in a parameter, you have to check it in the third column (blue rectangle). In this case I choose to make turn the chapter specific variable v_ch1 into a parameter. The warning icon appeared, and will disappear when I confirm the entered description. Both v_counter and the literal '1' are no parameters, since they will not have to be changed when using the shared action for a different button.


2. NextViewBt

This action is triggered by the four shape buttons that replace the first view buttons (by previous described action). It is a simple version of FirstViewBt with only three statements:
  • increment v_counter
  • increment specific chapter user variable
  • jump to first slide of that chapter
Only two parameters in this case: the specific chapter user var (v_chx which was a candidate) and the first slide of the chapter (compulsary parameter). As for FirstViewBt, neither v_counter nor the literal '1' were promoted to parameter.

3. EnterDash

This action is triggered when entering the Dashboard slide. It is a conditional action with two decisions. In these screenshots you see the Advanced action from which I started. First decision 'None' will make the slide ready for a first view, second decision 'AllDone' will make the Next button (navigates to last slide) visible and do some more bonus tricks.
I'm smiling at this moment, because I 'hear' a lot of questions: 
  1. Why did I convert this into a shared action?
  2. What are the parameters for this shared action?
  3. Can the user vars be parameters, they are used more than once?
  4. Same question perhaps for the literal '0' that is used 8 times?
  5. ....yours ?
Or is it crystal clear? Let me know. One tip: I used the shared actions for this movie:

Movie2: reused shared actions


Dare to Share - part 3

A while ago I published two posts as an introduction to shared actions in Captivate 7. At that moment I promised a third part about reusing shared actions in other projects. But since I was aware of the imminent release of CP8, and as a professional procrastinator, I postponed this part. I will explain how I reused the shared actions described in this article for the second movie. Watch out next week.


Conclusion

For those who expected a complete review or Captivate 8, sorry!  These are not the only CP8 features that I like. Honestly there are also changes that I don't like. Maybe I will post more about both when I feel capable to judge better. 'Hurry slowly' as a great friend tells me all the time. The enhancements I started to discuss today, I have been exploring already (also during prerelease) more in depth. In Dutch there is a proverb, freely translated like 'Each bird sings his own song, depending on his beak'.  I need more time for my songs.