Custom Play/Pause button (Use case system variables)

Intro

Many years ago I did write this blog about a custom Play/Pause button.  Meanwhile lot has changed in Adobe Captivate: new simple actions were added, multistate objects appeared, shape buttons became possible with InBuilt states and custom states. Due to a question on my personal blog, due to the recent posts about using System Variablees, time to write out a short article with a step-by step workflow to create a custom Play/pause button using a Shape Button.

Why Shape Button?

I wrote about States in this  article: States and State Commands. 

Captivate has 4 types of buttons, they all have the 4 InBuilt states: ‘Normal’, ‘Rollover’, ‘Down’, and ‘Visited’. They can all have supplementary custom states, which allows to create nice toggle buttons showing the situation at that moment. Examples: TOC open/closed, Audio playing/muted, CC visible/invisible etc.  The three first states are included in the object style of the button or the shape, the Visited state is not included. Custom states are neither included in the style.

Text buttons, Transparent buttons (which are not necessarily transparent), Image buttons can NOT be used on master slides, can not be timed for the rest of the project.  A shape button can be used on master slides, can be timed for the rest of the project. For a toggle button Play/oause this is a big advantage: you need only one shape button for your project. If you choose for one of the older button types, you would need a button on each slide.

Workflow

Shape Button – creation

You have to know what the start situation is in your course. By default (after having launched the course) everything will be in ‘Play’ situation. In that case the start look of the Shape button has to be ‘Pause’. You have to create that button on a slide, you cannot create states on a master slide.

  • Create a shape and check off the option ‘Use as Button’.
  • Open the State panel, using the button ‘State View’ in the Properties panel.
  • In the Normal state, fill the shape with an image or text you want to show when the course is playing, to pause the course.
  • Delete the InBuilt states ‘Rollover’ and ‘Down’, using the right-click menu on those states (you cannot use a simple Delete key).
  • Add a Custom State, and label it (I use Play as label)
  • In this custom state fill the shape with an image or text you want to show when the course is paused, to resume Playing.

Here is a screenshot of the states I created:

Location Shape button

Once the button is ready, you have to decide where to put it, and take out the Pausing point. Reason: you want this button to be available all the time, but not a pausing point like you need for a Submit or a Next button. There are two possibilities for its location;

1. On master slides

If you want to use the Play/pause button on all slides, and you are creating a non-responsive project or a responsive project with breakpoint views, the easiest way is to copy/paste the button to the Main master slide. The daughter master slides can inherit the button. Careful: in some themes the Title master slides is not using the main master slide objects, you’ll need the button also on that master slide in that case.

For a fluid boxes responsive project, you cannot use the main master slide (cannot have fluid boxes). You will need to insert the button on each used master slides where you want that functionality.

To turn off the pausing point: open the Actions tab of the button, and uncheck the option ‘Pause project until user clicks’.

Timed for the rest of the project

The alternative for the master slides, is to have the Play/pause button on the first slide, and time it for the rest of the project, always on top. That has to be done in the Timing Properties of the button. At that same place you can also turn off Pausing:

Advanced Action

The success event of the button has to trigger a rather simple advanced action. Check the ‘Conditional Tab’ and create this action:

Explanation: I am checking the value of the Boolean variable cpCmndPause (see article). If that value = 0, the course is playing.

In that situation I will use the command ‘Pause’ (‘Pause’ is exactly the same as ‘Assign cpCmndPause with 1) and change the state of the button SB_PausePlay to the Play state.

If the course is paused however, that variable would not have the value = 0 (but = 1) and the ELSE commands are done: the state of the button is reset to Normal, and the playhead is released by the command ‘Continue’ (which is the same as Assign cpCmndResume with 1, which is also setting cpCmndPause back to 0).

Warning: not everything is ‘paused’!

As I explained more in detail in my sequence of blogs about the timeline, even an absolute pause (‘Pause’) will not pause everything.  Here in short the most important:

  • Animations of all type (animated GIF, SWF, OAM….).
  • Event video if it is playing
  • Audio which was started with the command ‘Play Audio’

For more information:

How and Why Pause Timeline

Pausing Timeline and Audio

Same would happen with the Pause button on the default Captivate playbars. It is not due to the fact that this is a custom button.

The post Custom Play/Pause button (Use case system variables) appeared first on eLearning.

Understanding/Using System Variables – part 2

Intro

In a first blog about System variables I offered a free table with description an references for all system variables. If you didn’t get that table yet, please get it from that article. That older post described shortly all caregories. It had focus on the variable categories s which are read only, and how they can be used to show information in a course and/or for editing/debugging reasons (like cpInfoCurrentFrame).  Not treated in that first part was the Quizzing category because I already had a detailed explanation in this blog post.

Here the focus is on that very special category ‘Movie Control‘. It is special because those variables cannot be inserted for viewing in a course.  More important is that they can be controlled, changed by the developer on runtime which is not possible for any variable for the other categories. Learning how to control these variables can be a good step up to getting started with advanced or shared actions: more complicated actions than the simple actions which you find in the dropdown list on the Actions tab of an interactive object.

Terminology

Since this post is meant for users starting with variables, I want to explain some terms that are important expecially when working with system variables of the Movie Control category. You can skip this part is it sounds familiar to you.

Slides versus Frames

In questions on the forum I often see confusion between those two terms. A normal cptx project is slide-based. That leads many users to suppose that Captivate is functioning like Powerpoint, but that is not true. Essentially Captivate will lead to a movie, not to a sequence of slides which is typical for a presentation. That movie is more than a simple video, because interactivity is based on offering control to the user and to do so you need to  pause the movie. This is not the case with a video: the learner can pause the video, but the developer has no influence of therm with the exception of the interactive videos. I use the term interactive movie for a fully interactive published Captivate file. An interactive video is not better at all, more of a hype at this moment, because is interactivity is more limited. Although a PPT can have animations with some duration and seqeuence, it is not a real movie unless you capture it as a movie.

Any video/movie is played at a certain ‘speed’. The speed is defined in frames per second or FPS. The default speed of a published cptx file is set to 30FPS (but a video demo at 15FPS). If you keep the default length of a slide in CP, which is 3 seconds, that means that you have 90 frames in that slide.

I explained these terms already many times. As you can see in the table, several system variables in the Movie Control category are linked to navigation between slides or frames. Understanding the difference is required.

Boolean variable

A variable can have any value in Captivate: a text (often called string) or a number. When you look in the table you will see the typical values of the system variables. Many of them also aren:  from the ‘Boolean’ type. That is a variable that will have only two possible values: 0 or 1, true or false. You can interchange them easily, I prefer using the numbers 0/1 because it is less typing.  In the Movie control category many variables are indicated as Boolean: cpCmndCC, cpCmndMute, cpCmndNextSlide, cpCmndPause, cpCmndPlaybarMoved (pretty useless, internal), cpCmndPrevious, cpCmndResume, cpCmndShowPlaybar, cpCmndTOCVisible and cpCmndLockTOC.

Like other variables Booleans have a default (or start) value which you find also in the table. Often it is 0, which means the situation described by the variable is turned OFF. But there are exceptions. Some examples:

  • cpCmndMute: default value = 0, which means that audio is playing
  • cpCmndPause: default value = 0, which means the course is not paused
  • cpCmndShowPlaybar: default value = 1, which means that the playbar is visible
  • cpCmndTOCVisible: default value = 0, which means that the TOC in overlay is not visible

Toggle

When used as a verb, this means ‘switch between two situations’.  I didn’t use the word ‘state’ to avoid confusion with states in a multistate object. You can toggle a playbar between the visible and hidden situation, audio between muted and not muted, a TOC in overlay between expanded and collapsed, any object or group between visible and invisible. There is a close relation between Boolean variables and toggling. For that reason a couple of versions ago the new command/action Toggle’ appeared in the dropdown list of the Actions tab, and in the advanced actions dialog box.

Some people also use Toggle to indicate a Toggle button. That is a button which allows to switch between two situations£. Several buttons on the Captivate playbar are toggle buttons: turning CC on/off, play or mute audio, pause or continue the movie.

Use Cases

Toggle buttons

CC on/off

If you use custom buttons instead of a playbar, which is recommended for any non-linear project, you can create a toggle button to turn Closed Captioning on/of. Beware: in versions before CP2017, Closed Captioning was always turned off when the course started. That is the reason why the default value of cpCmndCC  is still indicated as O. With the new more elaborated features for CC, you also have the possibility to turn CC on for a project. In that case the variable will have the value 1.  To create a toggle button for this feature you can use a shape button on the main master slide (no need for pausing) if you are in a non-responsive project. For a responsive project with fluid boxes, using the main master slide is a bad idea (no fluid boxes possible), you’ll have to use the other master slides. Use guides for the creation of the footer fluid box, so that it is consistent for all the master slides.

Create this simple action to be triggered by the Success event of the button:

Since you don’t need this button to pause the slide, you have to uncheck the option ‘Pause Project until user clicks’.

Audio on/off, Playbar on/off, Overlay TOC expand/collapse, TOC lock/unlock

The workflow is exactly the same as for the CC toggle button. In the screenshot you see that the appropriate system variables show up and can be selected.

It is of course possible to replace a toggle button by two  buttons. Example: a button to show the overlay TOC  and another one to hide it. In that case you could use the commands ‘Show TOC’ (same result as Assign cpCmndTOCVisible with 1) and ‘Hide TOC’ (same result as Assign cpCmndTOCVisible with 0). This is  an alternative for the tiny expand/collapse buttons attached top left of the slide. A toggle button saves space on the slide, easier to manage.

Two buttons are also possible for Playbar on/off  (Show Playbar/Hide Playbar) and for locking/unlocking the TOC for navigation (Lock TOC/Unlokc TOC).

For Audio on/off you do NOT find such simple actions in the Actions tab.  ‘Play Audio’ is meant only to play an audio clip, but has no effect on slide audio, object audio, nor background audio. Similar with ‘Stop Triggered Audio’ which can only stop clips started with the command ‘Play Audio’. If you want two buttons, you will need to use the system variable cpCmndMute, with the Assign command:

  1. Assign cpCmndMute with 1    will mute audio
  2. Assign cpCmndMute with 0     will have it play again

To create a toggle button with a different look when the situation is toggled, you’ll need an advanced or shared action. Have a look at:

Multiple Toggle Buttons with one Shared Action

Shape category ‘Buttons’ – Challenge

Being a tutorial for newbie (no advanced/shared actions, I will not explain using the navigation system variables for two reasons:

  1. You probably never will use the slide navigation variables  for navigation between slides. It is intuitive to use ‘Go to Next Slide’, muc more than ‘Assign cpCmndNextSlide with 1’
  2. The navigation variable cpCmndGotoFrame is  very important in micro-navigation but that is a more advanced topic that needs the use of advanced/shared actions. If you are interested, have a look at: Intro to Micro-Navigation

However I have a challenge for you! The shape dialog box has a special category labeled ‘Buttons’.

Typical for these shapes: the option ‘Use as button’ is checked off (no pausing point by default). They will trigger an action, which for most buttons is a simple action. You will see that the Mute button  is assigning “1” to the system variable cpCmndMute. The three buttons marked in the screenshot trigger an advanced action: the Home button and the Start button (both marked in red) use the advanced action ‘startSlide‘, the End button (marked in green) uses ‘endSlide‘.  You can open th action in the Advanced Actions dialog box,  by clicking the Browse icon:

Look at the use of the system variables in startSlide :

  • Assign cpCmndGotoSlide with 0          this means: go to the first slide (index starts with 0)
  • Assign cpCmndResume with 1              is the same as Continue

Can you explain the script ‘endSlide’?

More?

A lot more is possible when using the movie control variables in advanced or shared actions. I already posted some links before. Here is a link to a blog post about ‘Replay Slide‘ where you’ll find different scenarios. It will help to understand the importance of frames: if you only get back to the first frame of the slide, reset will not happen if this is done by an On Enter action, or if you have Text Entry Boxes/Drag&Drop slide.

For newbies I plan a third article about user variables and simple use of them (still without advanced/shared actions). Would love to get some comments.

The post Understanding/Using System Variables – part 2 appeared first on eLearning.

Understanding/Using System Variables – part 1

Intro

Many years ago I did write out some tutorials explaining how to use variables. They are still available in Adobe’s Knowledge base, but of course the screenshots are outdated since they were created in Captivate 4 and 5. Inspired by a recent thread in the forums, where it took a while to explain the use of variables, I want to write out some posts about Variables. This first article will focus on System variables and include a downloadable table which you can use as reference for them.

What is a Variable?

If you ‘google’ to find a definition of a variable you will get thousands of results. I would say that it is a container identified by a name and the content can change or be changed (is variable). It is a term used in programming languages and applications. It makes them more flexible, powerful. If you are a maths lover, compare this equation: 5 + 6 = 11 with  a + b = c. The a, b, c are variables, and the second equation allows you to create tons of small sums. The first equation uses ‘literals’, and you have only one sum.

Captivate’s System Variables

Captivate has by default 6 categories of System variables and 2 automatically defined user variables. This article is only about system variables, they are available for your use in any project. All the system variables start with the characters ‘cp’. Lables are, as usual in Captivate, unique for each variable and they are case sensitive. It may be confusing that the two  user variables,  created for each new project (cpQuizInfoStudentName and cpQuizInfoStudentID) also start with the same characters..  When you open the dialog box  Project, Variables the type ‘user’ is automatically selected, and you see only those 2 variables. Be sure: those are NO system variables, they are necessary for the workflow of Internal Server reporting, but can also be used with many LMS’s. The certificate interaction uses  cpQuizInfoStudentName as well.

Categories –  table

You can download the free explanatory table from  SysVars

Captivate has 6 categories of system variables. To see them switch to System type in the dialog box:

  1. Movie control: is a very special category, which I will explain in a later article.  They offer a way to control your course by changing a system variable. This is not a normal behavior of variables, and can be considered as a, add-on to more complicated advanced/shared actions. These system variables are also different from those of category 2-5 because their value cannot be displayed in Captivate output.
  2. Movie Information: typical for this movie are the number of slides/frames, the speed (FPS), which frame/slide you are at this moment, etc… All variables of this category are read only. Their value can be used by the developer, they can be displayed in a Captivate file, during Preview and after publishing. I will point out some examples later on that could save you time while developing. In the table you’ll find some references as well.
  3. Movie Metadata: you can add metadata to a course, lot of it can be done using File, Project Info.  The behavior and usefulness are similar to the previous category. More tips below the examples below.
  4. System Information: data about present Date, Time, or which OS you are using if watching on a mobile device are in this category. Like 2-3 these variables are read only but can be used in the same way as those from Movie Information and Movie MetaData. Look in the table for examples.
  5. Quizzing: will not expand on this category because I already posted a blog about using Quizzing System variables
  6. Mobile: has only one system variable which is exceptional because it stores 3 numbers. It cannot be displayed in a course, only be used in actions.

This blog has focus on categories 2-3: they are very useful when you insert them in a course, either during debugging or to be able to show their value in output.  The workflow is the same for all variables that can be displayed (not category 1n nor 6).

Display a variable

The best way to insert a variable to be displayed is this workflow:

  • Create a text container: either a caption or a shape on the slide
  • Go into edit mode, by double clicking or using the function key F2.
  • You’ll get the Character part in the Properties panel. Find tesee three buttons

    First button inserts a symbol, last button a hyperlink, but you need to click the second button to insert a Variable
  • Switch from the default User type, to System.
  • Choose a category under the dropdown list which has by default ‘All’ as choice
  • Select the wanted variable.
  • The ‘length’ is set by default to 50 characters, but you can edit this number. It is essential to do so if you expect the value to be greater than 50 characters (spaces included).
  • Confirm the insertion with the OK button.
  • While editing the variable will appear as in this first screenshot, between double $$. When previewing or after publishing that placeholder is replaced by the value (second screenshot)

Edit and Runtime view

Some examples

1. Slide counter: Slide X/Y

You use two system variables from the category Movie Information: cpInfoCurrentSlide and cpInfoSlideCount. Insert this text on the first slide of your course, and display it for the rest of the project.  Do not forget to check off ‘Always on top’ for the text container.

2. Author name in Theme

You will use the variable cpInfoAuthor from the category Movie Metadata. While creating a custom theme to be used in multiple courses, insert this variable in a text container on the main master slide. Master slides are part of the theme. Do not forget to warn your colleagues to fill in the fields under File, Project Info.

3. Course name in Theme

If you use a Title master slides, you can insert the variable cpInfoCourseName on that master slide as title. That variable also blelongs to the category Movie Metadata. Same comment: Project Info has to be defined by the developer. You can also use this variable in a footer of course.

4. Debugging Timeline

As I mentioned many times, understanding how to pause the timeline, and its consequences on objects is very important. I always recommend to insert a text container with the variable cpInfoCurrentFrame to watch pauses while Previewing the project. It is a variable from the category Movie information. You can see that I apply this recommendation myself in this movie:
Captivate’s Timeline

You’ll certainly find more examples. When used in combination with advanced or shared actions, lot more is possible but that is beyond the scope of this introduction.  One example: to show the elapsed time on the course (the real time spent, not the developer’s time based on slide durations), you cannot just insert the variable cpInfoElapsedTimeMS (from Movie Information) because it is defined in milliseconds. You need to do some simple maths to make it readable to the learner, and that means …. advanced action.

The post Understanding/Using System Variables – part 1 appeared first on eLearning.

States and State Commands

Intro
Recently a user posted a question about using the ‘Go to Next State’ command used in Advanced actions. You can read our discussions in this thread.

Time to write out some tips for multistate objects. This blog wants to give an answer to the user, and has its focus only on that solution. I plan to publish more about the basics of states and their commands later on. To me personally the introduction of multistate objects is in the list of my favourite features in Captivate, closely following Shared/Advanced actions and Shape buttons.

Example movie

Watch this published rescalable interactive movie. The second slide has three shape buttons, navigating to three slides where you can read and confirm reading, or click hotspots, or answer questions. Each of your actions will result in changes to the progress bar on that second slide. Beware: whenever you have clicked an interactive object it will be disabled!

Play

Terminology Multistate objects

InBuilt States and Custom States

You can add custom states to any object, static or interactive. In those states you can have many object types: graphics, video, audio… but no interactive objects nor hyperlinks. The Normal state is the default state, which will always appear unless you have changed to a custom state using a command (in a simple or an advanced/shared action). Nothing is locked to the default normal state for custom states . You can have objects in a custom state that are in a totally different position from the Normal state. Custom states are always controlled by commands, not by a situation. If you want a custom state to remain for future visits to the slide where the multistate object is sitting, you need to check the option ‘Retain state on slide revisit’.

Inbuilt States exist for these object types:

  • All types of buttons Shape buttons, Image buttons, Transparent buttons and Text buttons.  You have four of those styles: Normal, Rollover, Down and Visited. The first three are part of the button style.  You don’t have the same freedom for location of those states, they are locked to the Normal state (look for the Lock indicator).
  • Drag sources and Drop targets on a D&D slide. For more information see: InBuilt states for D&D

I will only talk about shape buttons here. Contrary to custom states Inbuilt states appear automatically in a situation: when not hovering over button (Normal), when hovering over button (Rollover), when pressing button (Down) and when after clicking/tapping (Visited, if it has been created). You can only control Normal and Visited by a command if necessary, not the Rollover/Down states.

State commands

These commands are available both in a simple action (dropdown list in Actions) and in the Advanced Actions dialog box, to be used in advanced or shared actions:

  • Change State of …. to
  • Go to Previous State  …..
  • Go to Next State ….

When you use these commands as a simple action, from the dropdown list inthe Actions tab, they can only be applied to multistate objects on the same slide as the event triggering the action (Slide event, interactive button events) The Hypelink even thas only the first command (Change State).

If you insert one of the commands in an advanced/shared action they seem to be able to apply also to multistate objects on other slides. That is indeed the case for the ‘Change State’ command, but is NOT functional for the commands Go to Next/Previous States. I have logged this as a bug, because you are able to choose multistate objects on other slides, however without any effect. That was the reason of the question in the forums, described in the Intro.

You could see in the Example movie that I have a workaround. How?

Solution with variable and While loop

YOu will need one user variable v_counter,  to track the number of clicks while being on other slides than slide 2 with the Progress indicator SS_Progress (a multistate object). This progress indicator starts with a Normal state which is a shape with Alpa and Stroke = 0.

That variable starts with a default value = 0. The clicks on the OK buttons in slide 3, on the hotspots in slide 4 and on the correct answers in slide 5 do increment the variable, besides other commands.

When returning to slide 2 (which has the progress indicator) using the shape button ‘Back to….’ (is on the used content master slide) an advanced action On Enter for that slide is launched, using the While loop:

Example: if the user has performed 3 actions on any slide, v_counter would be 3. The while loop will then be done 3 times, which means the 4th state of the progress indicator will appear. At the same time, the variable will be set back to 0 at the end of the loop. The learner can continue to visit another slide, and the variable is ready to track again.

This is just an example, many variations are possible. Maybe you want to allow visits and actions to consecutive slides before returning to the main slide, this can easily be achieved. Or have feedback appearing on the main slide after all slides have been visited, based on the obtained progress..

More?

I didn’t explain all actions in this post. The slide with the hotspots is based on a recent article about Hotspots in a 2D image.

Maybe you are wondering if I used the Visited state or a custom state for the OK buttons (slide 3) or the hotspots? What the quickest workflow is to create the states for the Progress bar? Did I use shared actions or advanced actions, and why did I choose that way? Why did I disable the buttons? If you are interested, I can explain… on demand.

The post States and State Commands appeared first on eLearning.

Hotspots for a 2D Image – workflow 2 (close button/lightbox)

Intro

A week ago I published a first showcase, explaining how to replicate the hotspot workflow for VR projects on a 2D image. This second article about using hotspots for a 2D image is not duplicating as closely that same feature: instead of showing the popups for a duration defined by the developer, this workflow will offer a close button for the popups. The learner decides when to close a popup and proceed (eventually) to the next hotspot. I also used a technique, often labeled as ‘lightbox’: to have the popup stand out of the rest of the content, it will have a semi-transparent cover in the background dimming the rest of the slide.

Example movie

I used the same image (welcome screen) and content for the popups as i the first workflow. Only  some small color changes and changes in the location have been applied . Watch this 3-slide movie: after the title slide (doubles as poster image) you can test the new hotspot slide, and the last slide gives a short Step-by-step list if you want to use this slide in your project.

Play

Try it out: quick workflow

You can download the project file from this LINK.

If you do not need to have more than 6 hotspots, and you are happy with the resolution of the project (1024×627) and its Theme (Pink Icing), you can quickly use the hotspot slide using these steps:

  1. Create a blank project, with that resolution and theme. Create your title slide, and eventually a poster image as explained in his older article
  2. Copy the hotspot slide from the sample project and paste it into your project. The object names will get an extra number, but you don’t have to bother about that. The advanced and shared action is automatically adapting to the new names.
  3. Select the Image..  ‘WelcomeScreen.png’ and replace it by your image (Properties panel).
  4. Move eventually the hotspots to the right location. If you need less than 6 hotspots you can hide some of them in output. Deleting is also possible. Start by hiding or deleting the last hotspot(s). The sequence of the hotspots is starting with HS_Responsive (first in first row), going to the right and then to the second row. Last hotspot is for the PPT.
  5. Open the multistate object SS_Info.. which is just on top of the ‘Cover’ (needs to be there). Click the State view button in the Properties panel to open the Object State panel.
  6. Leave the Normal state alone. Replace the content in the other states by your content (follow the sequence described under 4.)  You don’t need to rename the states, nor to delete the last unused ones (just leave them as they are).
  7. Start testing with ‘Preview HTML in Browser’ (F11).

More?

Of course it is possible to have more control over the design, to add hotspots if more than 6 are needed. Let me know if you want to try this out from scratch, taking advantage of the shared action which you can reuse in any project. I could write out the complete step-by-step workflow if you find it useful.

The post Hotspots for a 2D Image – workflow 2 (close button/lightbox) appeared first on eLearning.

Importance of Captivate’s Events?

Intro

Over 6 years ago I published a blog post explaining the importance of Events in the application. I also offered for free a table describing all the possible events. Meanwhile new features have been added, the User interface has changes. It is time to update that old post and table. You will be able to download the table at the end. It is a protected document, you can print it at a low resolution, but no permission for editing. You can find workarounds, but please I beg you to show some respect for my work.

When training/helping users to start with advanced or shared actions, I often detect that newbies are not aware of the process needed to trigger an (advanced/shared) action: each action, whether a simple, shared  or advanced has to be linked to an ‘Event’, and that is the subject of this article.

Events – out of the box

Lot of events to trigger an action are linked with interactivity, requiring  the user to act.  That  is the case for Success/Last Attempt  events for (Shape) Buttons, Click Boxes, Text Entry boxes, interactive Learning interactions, Drag&Drop but also for Question/Knowledge Check slides.

Less known are the actions that can be triggered when a Quiz is completed (Passed/Failed).

In that older blog post I mentioned the  Rollover slidelet which had  two events: on Rollover, and on Click. Since that object is no longer supported for HTML5 output, I took it out of the table.

Object actions can be triggered by each drag event in a Drag&Drop slide and offer a lot of possibilities. Have a look at all the posts I published about Drag&Drop.

Ignored by most users are the Hyperlink events. Such an event is not limited to ‘hyperlink’, but can trigger all sorts of actions, including Advanced actions. Find a example here.

Events that are not linked with interactivity are the slide events: when entering or when exiting a slide, you can have a simple, advanced or shared action to be executed. Have a look at the table to see possible limitations.

Often I get the question if an action can be triggered by time or by a frame. Not possible out of the box, but with micro-navigation, eventually the Delay Next actions command and/or the Timer/Hourglass interaction this limitation can be overridden.

Overlay slides in Interactive Video, both the content and KC slides have similare events to those in a normal project. However the events for the hotspots in a VR project or 360 image/video are more limited as are the overlay Quiz slides in a VR project.

Widget to extend events

InfoSemantics developed a HTML5 widget that is one of my favourites: the CpExtra Widget. Adding events to objects is only one of its multiple features. It is not free but if you are plunging really into advanced/shared  actions, please try it out because it can add as many events as you want to any object. A trial version is available.

InfoSemantics used to have a SWF widget (EventHandler), worked great, but with the EOL of Flash player for all browsers, not so useful anymore.

List

You can download the list from this link.

There are two  tables. First table shows events able to  trigger only one simple, shared or advanced action/ The second smaller table summarizes the events which can trigger one out of two possible actions based on a condition: validated TEB, question slides, scored Drag&Drop slides  and Quiz.

I would appreciate if you left some comment in case you find this list useful. If you find this list useful, I could offer some other tables as well.

The post Importance of Captivate’s Events? appeared first on eLearning.

VR Projects – tips and tricks

Intro

The ability to embed 360 images/video in an eLearning course is an enhancement (CP2019) which can be used in a lot of eLearning courses. As a civil engineer I think about the setup of a construction site, detection of lack of safety in a building etc. The most recent release of Captivate allows to use those assets in two different type of projects: either a full VR project, or on individual slides in a normal cptx project. Not yet possible in a Fluid Boxes project as far as I know.

A VR project will be created right from the welcome screen. It can only have slides with a 360 Image or Video. All other Slide types except 360 slide are dimmed under the big button Slides, and the menu Insert is completely dimmed. You can add hotspots to trigger several possible actions,to the 360 slides, and overlay Question slides (not KC slides) where two types are possible: T/F and MCQ). The score slide is available but will not show up as overlay for the 360 slide, you’ll have to define a background slide for it.  I will offer some tips for the overlay Quiz slides, and for the Quiz Preferences.

If you use a 360 slide in a normal (blank) cptx-project, you’ll have the same hotspot functionality but will not be able to have overlay question slides. However you can use normal quiz slides and KC slides in the project. You’ll find more information about 260 slides in a future blog post.

In this article I will only talk about VR Projects using 360 Image slides.

VR project

Overlay Quiz slides – tips

Quiz Preferences

Quiz Preferences are available for the graded Overlay Quiz slides. But lot of the options are dimmed. Reporting setup is the same as in any other project with a quiz. In Settings options are limited to:

  • add the Clear button
  • add the Review navigation buttons if Review is allowed for the learner
  • hide or show the Score slide
  • allow Review

As usual for all Quizzes in Captivate, I strongly recommend to keep the Required field set to the default ‘Optional’ to avoid problems. You have same control over Quiz Result Messages and Quiz Review Messages as in any other quiz.

In Pass or Fail you can set the passing score (in % or points). But for the number of attempts on quiz level, you have only th choice between 1 or Infinite Attempts. In the last case you should activate the Retake button on the Score slide. There are no actions possible for Passing or Failing grade. No advanced actions are possible in a VR project, not only here for the Quiz, but also for the hotspots, for the On Enter events of any slide.

Default Labels are stripped out as you can see in this screenshot. It is impossible to change a style, only the Feedback messages, Clear and Submit button labels are available:

Styling the Quiz and Score slides

In a VR project, Themes are not available. Moreover the Object Style Manager cannot be used (as you did see in Quiz Preferences, Default Labels).  That seems to be a show stopper if you want to implement the font and colors that are part of your company’s default styles. However it is possible, manually,  to change the font and other features of the different text containers on quiz and score slides. You can even use Typekit fonts. It is of course more work than just applying another style, which is a pity. Maybe launch a feature request?

Score slide

Since the score slide needs a background slide, I tried to add slide audio to that background slide. However that audio played, but only for 1,5sec. As usual the pausing point for the sore slide (as for quiz slides) was set at 1,5secs.  You can move that pausing point and increase the length of the slide. But I did not succeed to make the audio play in combination with the score slide showing up.

Hotspots and actions

A hotspot is similar to a click box, but without a duration. It shows in the Timeline up as a brown circle. If you just add a number of hotspots without touching the timeline, they will all show up on the first frame of the slide, which means they’ll all be available to the learner at the same time, when in ‘Exploratory’ mode. If you prefer to use the ‘Guided’ mode, the sequence used to show a hotspot is following the stacking order: bottom hotspot shows up first, top hotspot last:

You can also scatter the hotspots over the timeline. But I will dedicate a separate article to the timelines of the 360 image and video slides in a near future:

Possible actions triggered by clicking hotspots are limited:

  • Show/Hide Playbar
  • Navigation commands: Go to Previous Slide, Go to Next Slide, Jump to Slide, Go to Last Visited Slide
  • No Action, Continue, Exit
  • Play Audio/Stop Triggered Audio.  There are more ways to have audio playing in a VR project:
    • You can add slide audio.  There is no way to pause that slide audio however with a custom action triggered by a hotspot (Pause is lacking in the commands). The only way to pause or mute the audio is with a playbar that has the appropriate buttons.
    • Hotspot audio: you can add audio to a hotspot like with any object. Be aware of the fact that this audio will play when the object becomes visible. This means that if the hotspots are all in the first frame, all audio clips start playing immediately (maybe even parallel with slide audio). If you scatter the hotspots, this is a way to combine a Display Text or Image command with audio. More info later in an article about the Timeline of a 360 Slide.
    • I mentioned above that adding
  • Display Text: the text will always be in Times New Roman, no way to change the style at all. The only possible workaround I see at this moment is to create an image with text in the appropriate font, size and color. Beware: you need to have a background for the text, or it will not show up. You also have to take care of eventual have a lower opacity, which means you will be limited to PNG  images, because JPEG doesn’t support transparency. Here is an example of a simple text image which I created in Word (text box, not simple text), captured with Snagit and lowered the opacity to 80% (this is not visible here, but shows well up in the VR project.:
  • Display Image: can also be combined with audio as explained before, and is probably the most versatile way of adding information. I mostly use it also for Text display?

Zooming?

The question has appeared a couple of times in the forums. It is not possible to zoom in on the 360 image, hoping this will make it in a future release. At this moment, a possible workaround is to take a 2D enlarged image and insert it on a hotspot that displays that image. Not the real stuff of course. I used it to display a full shot of my kitchen appliances in a 3D image of my kitchen.

The post VR Projects – tips and tricks appeared first on eLearning.

Custom Effects in Advanced/Shared Actions

Intro

Almost 8 years ago I posted this article on my personal blog: Editing Motion Paths and Using Custom Effects. 

Since that time Effects have been improved a lot, advanced and shared actions can make life much easier. Time to upgrade that blog post, meanwhile testing the behavior of effects in HTML output in CP2019. While Flash was always to be trusted, that is not the case for HTML output. And indeed, I bumped onto a problem with the Scale effect, and sometimes the Rotate to effect. When those problems are solved, I will post a published movie. The workflow to use Custom effects in a shared or advanced action is however still the same since many versions. It is a bit complicated, I have answered many questions about it in the forums. I will write it out now step by step.

When do you need  a custom effect?

Effects have been improved in some ways. Some parameters can be defined in the Advanced Actions dialog box. Look for the start time of an effect, its duration and more numeric fields (alpha, rotation, ease in/out, alpha….). However when using a combination of effects over and over again, you can create one custom effect which saves that combination and can applied in one step including the sequence and duration of the different effects. Another practical example are the motion effects, where you need to edit the motion path, which is certainly the case for more complicated custom motion paths.  This screenshot shows an example of a complicated combination of effects on the Timeline. It was meant to be applied to simulate a swimming fish:

Step by Step

Step 1:  Create and save effect

Create the effect or combination of effects on any object as a ‘Self)time based animation and test it out thoroughly (Preview HTML in Browser for a non-responsive project) in several browsers before saving it with a custom name.

You don’t need to save it in a specific folder. I use to save it with the project I am working on as is the case in the screenshot above. Effects are stored in XML-files.

Step 2: Apply the custom effect as time-based animation

If you would try to use the saved effect in a shared/advanced action it will no be available. If this is the first custom effect you ever created, there will not even be a Custom category to choose from You need first to delete all the individual effects applied to the object (above it was to the object SV_Fish (a SVG image). Then apply the custom effect as a (Self) time based animation again, but now with ‘one’ effect chosen with the browse button.

When looking at the timeline you’ll see exactly the same result as in the screenshot at the beginning: all the effects in the correct sequence and with the duration you had chosen.

The result of this second application is that the Category ‘Custom’ will now have been created, and it will have the new custom effect ‘Swimming’.

Step “: use in advanced or shared action

If you only wanted to apply this action using an interactive object, you could use a simple action. The field Category will now have the Custom category.

However often effects are used in Advanced or Shared actions in combination with other commands. In this example the Fishes are originally hidden, so I need to Show them and apply the effectn eventually also have an audio clip playing separately.

The two buttons on this example will trigger the same shared action. Both fishes are hidden in output at the start. When creating the advanced action, the category Custom can now be used, and the available parameters (start, duration) could be edited, but mostly you’ll not want to do that.

Because I needed to use this action twice, maybe also later in other projects unchanged or as template for other actions, I preferred a shared action which will have only one parameter: the object itself. An effect cannot be a parameter. However, the effect can not only be applied to one object, but also to a group. I can replace one fish by a group of fishes.

The post Custom Effects in Advanced/Shared Actions appeared first on eLearning.

What is Branch Aware?

Intro

Branch aware feature appeared with Captivate 6.  I created a blog post to explain it, but I regularly meet users who are still unaware of its existence, or its possibilities. So I decided to refurbish that old post, and create a new example movie with CP2019. You have seen a first version of that movie in my recent post about localisation with CSV import. That post discusses the workflow to create quiz slides in different languages in the same project. The example did use the Branch aware feature, but some of the features were not fully localised: the score slide was the default score slide which is in English since I am using a version in that tongue.

In this post I will also talk a lot about the quizzing system variables. If you didn’t download my explanatory table yet, please do so. You’ll find a link in this blog post: Creative with Quizzing variables.

What is Branch Aware?

Look at the Advanced Interaction panel of the example movie. It gives you a lot of information, not only about the events and the triggered actions, but also about all scored objects, including question slides.

You see that the total score is set at 60 points, result of the 9 graded questions in the file. For each of those graded slides both the individual score and the penalty are shown. There are also 3 Survey slides, without a score. Those values are also stored in quizzing system variables:

  • Total score in cpQuizInfoTotalQuizPoints
  • Score per question in cpQuizInfoPointsPerQuestionSlide (reusable variable)
  • Penalty per question in cpQuizInfoNegativePointsOnCurrentQuestionSlide (reusable variable)

If you don’t activate the option ‘Branch Aware in Quiz Preferencesn Settings (see screenshot later on), the default score slide will show 60 as maximum score. If the learner takes only one branch (language) of the quiz, the percentage (cpInfoPercentage) will be calculated as the obtained score (cpQuizInfoPointsscored) divided by that maximum score of 60. Same with the number of correct answers and total number of answers. This means the learner would be very confused, and never succeeds in that case. Reason is that those system variables are fixed when the course starts, I label them as being ‘static’.

When turning on Branch Aware, the system variables become ‘dynamic’, they will be changed on runtime based on the branch, thse slides visited by the learner. In this example movie that has been my choice: if the learner succeeds in one branch (maybe Dutch) the maximum possible score will be changed to 20, the percentage will be calculated with that maximum and the obtained score and the learner will see correct data on the score slide, can reach the passing score. No problem if a trilingual learner did visit the three branches, since the variables are dynamic, he will be judged on the maximum score of 60. This is the setup of Quiz Preferences, Setting for the example movie:

Example Movie

Play

Setup Project

The project has 16 slides: Title slide, Dashboard slide, 3 groups each with 4 questions, the default score slide and a custom score slide. This is the Filmstrip, I expanded the group ‘Dutch questions’:

Dashboard slide (slide 2)

I will not explain the effects on the dashboard slide, where I used a loop action (While) triggered by the On Enter event.

I created a user variable v_all The four buttons on this slide trigger a shared action which has two parameters: which value has to be assigned to the variable (1=All, E=English, D=Dutch, F=French) and the slide to jump to. Here is the instance for the button ‘Nederlands’ (Dutch):

Start slide of question groups Dutch/French

On all quiz slides a shape is displayed with info about the obtained score and correct answers so far. That shape, labeled SS_Info is a multistate object. In the Normal state the English version is displayed, there are two more states:  Dutch and French. Switching to the appropriate state is done with the On Enter event of the start slide of the Dutch and the French group. It is a simple action:

Because the project is pure linear, and there is no opportunity to go back, this setup is sufficient.

Last slide of each group (Survey slide)

The event ‘After Survey’ is used to navigate to the appropriate score slide. For the learners who did take the three branches, the default score slide (ScoreDefault = slide 15) is used, for the others the custom score slide 16. The same advanced action ‘LastAct’ can be used for the last slide in each group. If that last slide was a normal quiz slide, not a Survey slide, the same action could be used but for both Success and Last Attempt events.

Custom Score slide (16)

On this slide I used several multistate objects: where I added two states (Dutch/French) to the Normal state which has the English text. The On Enter event of this slide is used to trigger this action which will take care of showing the correct language information, and of the appearance of the Tropy image if the learner has passed.

One warning: the maximum score on the custom score slide is not created by using a system variable, but typed in (can also be calculated, as I explained in an older post about intermediate score slides). The variable cpQuizInfoTotalQuizPoints will not have changed from the original 60 points which took into account all quiz slides. It is strange because cpInfoPercentage where that maximum score is used, is correctly displayed as is  cpQuizInfoPointsscored.

Conclusion

I know that more improvements are possible, but blog post is already pretty long. If you really want to show a custom progress indicator on the quiz slides, maybe you’ll find some inspiration in this old post. 

If you allow backwards navigation, even give the opportunity to choose another branch on the dashboard, there will be some more editing needed. This article was meant to explain what happens when using the Branch Aware feature. Hope it helps some people.

The post What is Branch Aware? appeared first on eLearning.

CSV import – localisation

Intro

Some time before the release of CP2017 I published a blog post, where I explained how I use the GIFT import for localising projects. Time to check if a similar solution is possible with the new CSV import. I used the provided template file, an Excel spreadsheet with macros. ‘CSVQuestionsCreationMacro.xlsm’. You find this worksheet in the GalleryQuiz. That may be a problem for users who don’t have administrator rights, because the installation folder is not always accessible for them. That is one of the reasons that a lot of folders are duplicated in the Public documents (Windows) or Shared documents.

Example movie

You can watch this movie, which I’ll also be using to explain the Branch aware functionality in a future post. After the title slide, you have a choice slide: you can opt to take the quiz in one of three languages. Or, if you are trilingual, why not choose the option ‘ALL’?

Play

Workflow CSV import

English questions

I used the provided Excel worksheet to create these questions. I first double checked the Quiz Preferences for the Default labels, and the master slides. I took out the option to show the Progress. Reason: contrary to all other labels, when you change the Preferences to have another language, the labeling of the Progress will not remain on the existing slides. That is an annoying small bug. The progress text will always be converted to the last used language.

After importing the questions some manual work has to be done, because not everything can be set up in the CSV file:

  • The positive score for each question is imported, but if you want a penalty, you will have to add it manually. Refer to the Advanced Interaction panel shown below
  • For the MCQ slide with multiple correct answers, you need to set up the individual scores manually for each of the answers. With GIFT import it is possible to insert already the positive partial scores, not with CSV for what I detected.

It is very easy to set up the Matching slides, the Help documentation is not updated: you do not have to insert the pipe sympbol, there is a matching field. Nicely done!

Dutch and French questions

The third sheet of the Excel worksheet has the fields for the to be exported CSV file. However you are not allowed to edit those fields. You don’t have access to the questions as they were defined in the second sheet, so that is not a workaround.

My workflow was to use the exported CSV file with the English questions, and open it in Excel as a copy. That file can be translated to any language. You can save it as a CSV file from Excel and import in Captivate.

Before importing such a translated file, I set the Quiz Preferences to the correct language. Especially the Default labels need to be translated. For that purpose I have always a Preferences file ready that can be imported. Only newly created quiz slides will take on those new labels (also for the buttons), with the exception of the Progress mentioned above: it will also override the progress on existing quiz slides.

Conclusion

At this moment, I still have a slight preference to use GIFT files for import, especially if I need to translate questions for the same project or for other projects. Translating a GIFT file, that is already set up correctly is a quicker workflow. Being able to define partial score in that file is another plus.

In a next blog post, I will explain the ins and outs, and the setup of the Branch aware feature which has been used in the example file.

The post CSV import – localisation appeared first on eLearning.