Advanced Action – Shared Action

I have a button that will show/hide (toggle) a text caption, but I could have up to one on each slide that has different words.

On each slide, the text caption has a number after it. I’m not sure how to write the advanced action where it is reusable and knows what text caption it is?

I’m using Captivate 2017.

If I was using Animate I would have a var textName = textCaption + currentSlide; (using concatenation to create an object name).  I’m not sure how to accomplish this. Any help is appreciated.

The post Advanced Action – Shared Action appeared first on eLearning.

Fatal error when pasting a group. Captivate V 11.5.0.476

Hi all,

Recently I built a UI for the project I am working on. It consists of:

  • A home icon/image with a smart-shape button placed on top of it which sends users back to the main menu.
  • two chevrons again with smart shape buttons on top. these are for the Next/Previous navigations/
  • A help icon/image again with a smart shape button. For this button, I added a shared action which works to simply display a help message and then hide it after 5 seconds. Its a very simple 3 line script.

After I had built all of these assets into my UI, I then grouped them so that I could easily copy and paste to subsequent slides. Here is my problem, every time I go to paste it I get this fatal error:

I did figure out a solution but it is not ideal. the solution is to remove the shared action and instead set the help button to ‘no action’. This allows me to paste the UI group. But then I have to go in manually to each help button and re-add the shared action mentioned above.

So, my questions to you all are:

  • Have any of you encountered a similar issue?
  • Do you know why this might be happening? (I tried it multiple times, rebooted my machine between retries etc.)
  • Could this be a software issue or does it look more like a hardware issue?
  • Any better solutions than mine?

Thanks for reading!

The post Fatal error when pasting a group. Captivate V 11.5.0.476 appeared first on eLearning.

Hint with Delay

Why?

Recently in this thread user asked how to control the appearance of a hint caption.  It was meant to save some frustrations to the learner: hint should appear automatically after some seconds (to be defined), but should not appear when the learner had performed a certain action before that time. This is clearly not possible with the inbuilt Hint messages for interactive buttons. They only appear when the learner is approaching the place where he should click. A custom solution needed to be found. Three solutions were posted, interesting to have a look and compare them. Personally I always bear in mind that someone would like to use this workflow in a fluid boxes responsive project, and that limits the possibilities because stacking is not allowed in normal fluid boxes. We have multistate objects and since a couple of versions a “Delay Next actions….” command.

Example movie

Watch this simple example before reading the explanation:

Play

You will see two slides where a Hint can appear if you are not successful within a delay: slide 2 (arrows) and the Drag&Drop slide (3). I used an almost identical workflow for both slides with a Shared Action triggered with the On Enter Slide event, and a simple advanced action triggered by the arrows (slide 2) or by the object actions (slide 3). Both slides have a hint which is a multistate shape. No variables were used.

Workflow

Hint = multistate object

Both Hints on slides 2-3 are multistate objects. The normal state is the green text bubble, the second state ‘Void’ is completely empty:

On Enter Shared Action

The on Enter action has to perform 4 commands:

  • Hide the Hint shape
  • Wait for a number of seconds
  • Show the Hint shape
  • Apply an effect (I used an emphasize effect).

Only two items needed to be defined as parameters: the Hint shape itself (compulsory parameter) and the literal used for the Delay, to make it possible to have a variable delay if wanted. The Parameter dialog box will look like this:

TIP: although both slide 2 and 3 are pausing at 1,5secs (default pausing point), the command ‘Delay Next Actions by…. ‘ will NOT be paused, timer just continues. That behavior  is a big advantage for this particular use case!

Advanced Action ArrowAct

It would have been possible to use a simple action in this case, but the advantage of an advanced action was that I could assign it in one workflow to all the arrows on this slide.

What is the purpose of the Continue command? An advanced action will not release the playhead automatically as is possible with a simple action. On slide 2 a Next button has been added, with a timeline starting after the pausing point of the Arrow shapes acting as buttons. Release of the playhead is necessary to make the Next button visible.

Advanced Action DragAct

Although the advantage of being able to assign the advanced action at once to all the object actions doesn’t exist (could have used a simple action), it was so easy to create a duplicate of the first action that I kept with an advanced action.

It has been assigned to the 4 possible Object Actions in that dialog box.

The post Hint with Delay appeared first on eLearning.

Custom, Accessible Quiz: Development Highlights

I recently posted a showcase – a Custom, Accessible Quiz. This was a shorter, rewritten and rebranded version of a fully customized, yet accessible quiz I created for a client.
In this article I want to share some highlights of the development process. If you haven’t tried it already, it will help to understand the rest of this article if you try out the quiz before reading further. It’s at: elearning.adobe.com/2019/01/custom-accessible-quiz.

Multiple Introductions

Multiple text for introductions overlaid on a single slide.

In the course, there are two possible scenarios in which a learner may start the quiz:

  • A first attempt;
  • Re-taking after a failed attempt.

For both scenarios, I used a single slide to communicate the introduction to the quiz. Structurally, this means that the quiz always starts from a single location. Through experience, I have learned that this simple decision will help to simplify any debugging that might be necessary later as it reduces the number of non-essential branches in the course.

Advanced action showing how cpQuizInfoAttempts is used to determine which text to display.

For both scenarios, I used a single slide to communicate the introduction to the quiz. Structurally, this means that the quiz always starts from a single location. Through experience, I have learned that this simple decision will help to simplify any debugging that might be necessary later as it reduces the number of non-essential branches in the course. To determine which scenario was in play, I used Captivate’s cpQuizInfoAttempts system variable to track whether the quiz had previously been attempted. cpQuizInfoAttempts reports the number of times a quiz has been attempted; If the quiz has not yet been taken, its default value is zero.

Learn more about Captivate’s system variables at: helpx.adobe.com/captivate/using/captivate-variables-list.html.

Custom Options

I created the custom options using Smart Shapes as buttons. Each option has only two states: Normal and Visited.

The highlighted True button for question 1 with its Smart Shape properties visible in the Property Inspector.

In terms of accessibility, this was perhaps one of the trickier areas of the quiz because unlike regular buttons, smart shapes are not automatically accessible. It was therefore necessary to add Accessibility Names to each state.

Quizzing Logic

The quiz contains only accessible question-types: true or false, multiple-choice (pick one, and select all that apply) and fill-in-the-blanks.
I created separate advanced actions to implement the logic for each of these question types, and then saved them as shared actions so that I could reuse the same advanced action for multiple questions containing similar objects.

A shared action
In each question, every option has an advanced action associated with it which defines the following:

  • The score to assign to the option – 10 for the correct answer, 0 otherwise (in most cases. Select all that apply works a little differently).
  • Any options that must be deselected once this specific option is selected (for true or false and pick one question types).
  • The specific variable that should be updated when at least one option has been selected –to indicate that it is time to enable the Submit button.

It’s also worth mentioning that every question slide also has an On Enter advanced action that resets all the options to their Normal state and clears the score from the Submit button before the slide is displayed –-if the quiz is being retaken.

A Little Branching

As I mentioned earlier, through experience, I have learned that it is generally best to limit branching to only when necessary to achieve pedagogical objectives i.e. when distinct structural paths need to be defined. This situation fits that definition in that after the learner has completed the quiz, they are automatically directed along one of two distinct paths:

  • Pass the quiz and go to the course conclusion;
  • Fail the quiz and go back to the beginning of the quiz (to retake it).

So, this was a perfect situation to implement a little branching by creating a conditional advanced action which determined where to direct the learner based on the outcome of the quiz. It did this by determining which Next button and message group to display to the learner on the Quiz results slide.

The Branching View showing the branches from the Test Results slide.

Similar to the introduction, I used On Enter to attach the advanced action to the slide. This is the branch you can see in the image.

The post Custom, Accessible Quiz: Development Highlights appeared first on eLearning.

Hiding Custom Navigation buttons – Advanced or Shared Action

Why?

I have been writing multiple articles about Shared actions (and Advanced actions), have presented webinars. Someone even labeled me as ‘Empress of Shared Actions’ but I still see this feature ignored by the big majority of even advanced Captivate users.  I will create a list of resources in another blog for those who want to learn more about them. This short showcase is an answer to a question posted today in the portal. A typical use case for shared, actions, but the user tried to do it with one Advanced action. Since I couldn’t ask him for permission to use his question (I am respectful of his privacy as an European), I will not point to the thread but explain the use case here:

  • The navigation in the course is not accomplished by a default playbar but by custom navigation buttons. To make it simple, I will use only three buttons in my example: SB_Next,  SB_Back and SB_Home.
  • On some slides the navigation buttons have to be hidden, maybe because  dedicated buttons will appear at the end of the slide, thus forcing viewing the slide.
  • Because of that request, it is not possible to have the shape buttons on the master slide because they wouldn’t have an ID, twhich means you cannot control their visibility.
  • The Shape buttons have to be on the first slide, Timed for the rest of the project, always on top. This is only possible with shape buttons not with the trhee old types of buttons. Beware: if you use a responsive project developed with Fluid Boxes, objects timed for the rest of the project are not allowed.

One Advanced Action? Possible but cumbersome

The user proposed a solution where the value of the system variable cpInfoCurrentSlide was checked, and based on that number the buttons would be hidden or shown.  One great advantage of this system variable: the index starts with 1, which is exceptional because all the other incrementing system variables start with 0. Hence the Expression needed to restart a slide from its first frame (index of cpCmndGotoSldie starts with 0):

Expression  cpCmndGotoSlide = cpInfoCurrentSlide – 1

To make the use case specific: if I have  50  slides, and I want to hide the buttons on slides 5, 10, 15, 20, 25, 30, 35, 40 and 45 that could be done with one Advanced action like this:

IF cpInfoCurrentSlide is equal to 5     OR
cpInfoCurrentSlide is equal to 10   OR
cpInfoCurrentSlide is equal to 15   OR
cpInfoCurrentSlide is equal to 20   OR
cpInfoCurrentSlide is equal to 25   OR
cpInfoCurrentSlide is equal to 30   OR
cpInfoCurrentSlide is equal to 35   OR
cpInfoCurrentSlide is equal to 40   OR
       cpInfoCurrentSlide is equal to 45   

Hide Gr_Buttons
Continue

ELSE

Show Gr_Buttons
Continue

You see that I grouped the three buttons in Gr_Buttons.

Pretty cumbersome, right? Moreover this long condition has to be attached On Enter for each slide, and evaluated (will be fast, but I don’t like that type of long conditions). Moreover, if you change the sequence of slides, add or delete slides, you’ll have to check the advanced action and change the literals: those slide numbers will change. If you need to use this action for another course, you have to edit the condition.

Shared action

I have already blogged a lot about the advantages of shared actions. The action I designed for this use case, may seem bit complicated but it needed a lot of testing and understanding of the use of parameters which are literals. You can have a look at this published file. There is no content on the slides, I just indicated in the title if the buttons had to be visible or invisible. The used master slides is different as well. Reason: when you hide all buttons, there is no pausing point on the slide anymore. That is the reason why I added a transparent shape button covering the slide, and the mention ‘Click the slide to go to the next slide. A shape with two variables is inserted to follow the changes.

Play

I used three variables in this action:

  • v_show: has a default value of 1, because in the default setting the buttons are visible. This value is the only non-compulsory parameter, can be changed to 0 if the buttons have to be hidden.
  • v_visib: one of my popular variables which I import with a shared action as described in my recent post.
  • v_null: because I had to avoid double use of the literal 0, I used this variable with a default value of 0, it is also described in the same post.

The only variable that will be changed is the first one, you don’t have to bother about the other two variables.

The Shared Action, filled in with the two parameters looks in the Preview window as follows:

You have to add this shared action On Enter for each slide. This cannot be done for all slides at once. I’m sorry, but you always have to define the Button group as parameter, my request to be able to promote a non-variable/literal to the status of being always the same is not yet heard. The other parameter (value of v_show) has to be 0 for the slides where the buttons have to be hidden, and 1 for those where you want them visible. Here is an example for a slide where they have to be invisible.

In the Library you can check the usage of the action, 10 instances were used:

Extra

As a gift for 2019 you can grab this shared action:

NavShowHide

Import it into your course, the variables will be created automatically. You have to create only what you want to hide/show on the slides, group those objects and name them. Now you are ready to use that action On Enter for each slide. The group to be hidden/shown doesn’t have to be buttons, but they have to be displayed for the rest of the project.

The post Hiding Custom Navigation buttons – Advanced or Shared Action 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.