tag:blog.lilybiri.com,2013:/posts Captivate blog 2019-01-14T17:33:33Z ir. Lieve Weymeis tag:blog.lilybiri.com,2013:Post/1363289 2019-01-14T17:33:33Z 2019-01-14T17:33:33Z Shared or Advanced? Use case: Hide/show custom navigation

Why this use case?

I have been writing multiple articles about Shared actions (and Advanced actions), have presented webinars, trained developers.. 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 recently 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 (being European I am respectful of his privacy), I will not point to the thread but explain the use case:
  • 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, which 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 three 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 tricky

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, contrary to the user who had several Hide commands.

Whiy is this tricky?  First of all, if you change the sequence of slides, add or delete slides, you’ll have to check the advanced action and change the literals (slide numbers). Moreover this long condition has to be attached On Enter for each slide, has to be evaluated on each slide, I don’t like that type of long conditions.  If you need to use this action for another course, you have to edit the condition, take into account the number of slides where you have to hide, and the exact slide numbers. Copying an advanced action from one course to another course is always a pain if the action is attached to a slide event, which is the case here .

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

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 can have any objects, not only buttons. It is only necessary, that the group is displayed for the rest of the project.

Developing this shared action took a lot of exploring and testing because of two reasons:

  • If you use a lot of literals you have to choose carefully which one can be come a parameter to avoid issues with the action. That is very important if the same literal is used in multiple decisions. It led to my choice of having an empty variable. This kind of problem never happens for advanced actions. You need a different mindset, but that is of course my personal opinion based on lot of testing since shared actions appeared years ago.

  • Sequence is very important in any action, same as for advanced actions. Lot of consultancy jobs where I had to debug actions were due to ignoring this, combined with the typical behavior that you cannot break out of an advanced/shared action as is possible with programming languages.

I would like to explain this in depth, but not with a blog post. A webinar/training or live presentation is the only way to get this done. I expect this to remain a daydream…. very frustrating.

]]>
ir. Lieve Weymeis
tag:blog.lilybiri.com,2013:Post/1357311 2018-12-27T13:14:04Z 2018-12-27T13:14:09Z Random Questions; Do's and Don'ts

Intro

It may be a coincidence but recently multiple questions appeared s about using random question slides

  • :Why is it impossible to control custom objects on slides in question pools like Show/hide for a custom feedback in Review mode?
  • How can you create and use a timer for a quiz which has random questions,, and have actions done when a certain time has elapsed? Or show warnings when time has almost elapsed?
  • How can I use remediation for random slides?

There are of course the usual questions like: can I use random question ir Pretest, as Knowledge Check slides (now also in Interactive video), or quiz slides on hotspots  in a VR project?  Can I have a new subset of random ausetions at a new attempt...

In this post I want to explain why some of those workflows are impossible. For some use cases I have a workaround, will mention it but not offer it for free.

Tips for Question pools

You are for sure aware of the fact that all quiz slides, whatever the type, are based on the quizzing master slide (4)s, and the results slide on another master slide. Whether you are working with a responsive or a  non-responsive project, make sure to set up those master slides fully before creating the pools. That means; checking the object styles and edit them when necessary, check the sizes of the embedded objects. One example: if you expect to have long answers, make the answer area as big as possible, maybe by decreasing the height of the feedback messages and other objects. Do never delete an embedded object (they have no individual timeline). If you can uncheck some in the Quiz Preferences, that is fine. Do not forget to check the Default labels under Quiz Preferences. Please do never override object styles. This is eve more important for pools than for normal quiz slides. once I had to edit the master slides quite a lot in consultancy job because the developer has deleted embedded objects. Several pools were connected with the project. Updating the course after having edited the master slides took quite long, needed kot of coffee breaks.

I also prefer to use GIFT files (or the new CSV files) over editing all quiz slides individually. RE-importing a GIFT file is a lot less work than having to edit each individual quiz slide. It is even more important if you need the course in multiple languages.

You probably want all learners to have the same possible total score? In that case you'll need to give the same max score to each question in the pool.  Or use multiple question pools, each with a different score. I feel a T/F question is not 'deserving' the same score as a complicated MCQ  question. Keep the easier questions with a lower score in one pool, the more complicated in another pool.

Examples with (eventually) workarounds

1. New subset of random questions for new attempt in same session

As I understand the workflow with random questions generated from question pools on runtime: each random question placeholder will be replaced by one question from the associated pool based on a random number. That random number will then be excluded for the next random question. At the end all the random question have been generated and are treated like normal quiz slides, based on the setup in Quiz Preferences. They become static, the generating process will not be repeated when a new attempt on Quiz level is started. To confirm my suspicion I added a custom object to the pool questions, that object only appears when you insert new random questions, not on existing questions: there is no dynamic link between the pool and the inserted questions.

Workaround: you need to close the session, and restart the course. If you are transmitting to a LMS with bookmarking (Resume data), the number of attempts will be taken into account.

2. Random questions for Pretest/Knowledge Check slides

There is no possibility to use question pools for these slides, at this moment (log a feature request please) 

Workaround: use normal random quiz slides for them. For Pretest slides you'll not be able to store the data in the Pretest quizzing variables. If you have real quiz slides in the course, you have to be careful. You can convert the imported random slide in a Survey question (could be used of KC slides), or you can uncheck the option 'Reporting'. In both cases the score and percentage on the results slide will be correct, but some quizzing systerm variables will still take into account all questions as you coudl read in my blog about Quizzing System variables. 

3. Random questions in VR projects

You cannot use random questions on hotspots in a VR project. 

Workaround: insert 360 slides i a normal cptx project. Insert random question slides in that project. Use a  Guided status for the hotpsots which show content. The last hotspot can be used to navigate to the random question slides. Beware: when inserting 360 slides in a normal cptx-project the opion to have Overlay  Question slides attached to hotspots disappears. More info in this article.

4. Random questions in Interactive Video

Overlay Knowledge Check slides are supported for Interactive Video. But like normal KC slides, they cannot be random.

Workaround: Use norma random slides which cannot be used as overlay slides. However, you can use bookmarks to navigate to the slides, then navigate back to the video. I will post a blog about this workflow in the near future. 

5. Controlling custom objects in random slides

You can add custom objects to pool questions or even to the master slides, but be careful: for HTML output the stacking order will always be respected (I had a workaround for SWF output). That means that the embedded Quizzing objects will always be on top of the custom objects. Embedded objects do not have an individual timeline, not on the quizzing master slide nor on the quiz slide. You should never delete those embedded objects,  Some  can be unchecked in the Quiz Properties panel (examples: Clear button, Back button, Feedback messages), others not (Question title, Question, Submit button...).

You can have an Advanced/Shared action on a pool question for the On Enter event (quiz slides never have an On Exit event).  A user wanted to use that action to make a custom object visible only in Review mode, using the quizzing system variable cpInReviewMode. That is a workflow which works perfectly on normal quiz slides. The variable is available for pool questions as well, but.... you cannot reference custom objects on the quiz slide. The added custom objects will never appear in the dropdown list for Show, Hide, Disable, Enable.... The user thought this to be a bug, but I don't agree and will try to explain my intuition.

When you add a random quiz slide to a project, as I mentioned it will be generated from the associated question pool. I suspect this to be a copy/paste act.: based on a random number a copy of a pool question is placed in the Captivate project. You probably have experienced in the past the effect of copy/paste to labels? Since every object needs a unique name, the names of the objects on the inserted random question will have a name 'similar' to the name in the original pool question but not the same name.  The advanced action should have been self-edited to reflect that name change. That seems not to be possible, hence the fact that custom objects do not appear in dropdown lists for pool questions. Same happens when you copy/paste a normal slide which has Advanced  attached to the slide events: in most cases those actions will be broken.  It is one of the reasons I always recommend to use Shared actions whenever possible, especially for slide event actions. It is a lot easier to repair the action in that case. However, for random questions that is not possible, you cannot attach a Shared action to a random question, you have to rely on the actions in the pool questions. 

Workaround: I do have a workaround which works perfectly, but I will not offer that one for free. 

6. Using Timer for random slides.

Captivate has a TImer and Hourglass interaction with similar features. You can also time using system variables and advanced/shared actions or JS. 

To use them for random slides, you need to insert the interaction before the first random slide on a normal slide which can be very short. However those interactions are not working very 'exactly', hence I always combine them with system variables.  No details about my workflow. 

7. Remediation workflow

A user asked if remediation would work for random slides, and there my answer is No. It looks very logical to me why this is an impossible workflow using question pools and random questions. Remediation means you have to link to a content slide from the quiz slide on Failure. The content slide needs to have the special command 'Return to Quiz' on a custom Next button. That action will only work when the learner gets to that content slide from a quiz slide, in other situations the Next button will proceed to the Next slide.

Why is this not possible with random questions? A question pool can be used in many files, how ca you exactly define the name or the slide number of the content slide to link to?  You need an absolute navigation link to that content slide, which is totally impossible.

Workaround: do not use a pool, but insert all the questions (with link tot the content slides) in the course. Navigate to a question based on a random generated number (with JS). Make sure that you don't reuse the same random number twice, nor that the non-selected questions can be visited. Turn on Branch Aware in the Quiz Preferences to have a correct value for the quizzing variables on the score slide. A lot of work!

 

 


]]>
ir. Lieve Weymeis
tag:blog.lilybiri.com,2013:Post/1355073 2018-12-19T15:38:35Z 2018-12-19T16:04:16Z 4 Tips for Interactive Video

Intro

Interactive video is one of the new features in CP2019 (version 11). Over 10 years ago I did choose for Captivate because it had a lot of possibilities for interactivity in any cptx-project, Some users do think that 'interactive video' is the way to go, but to me it is a nice addition especially to make existing passive video a little bit more engaging. To avoid confusion, because already did see a lot of theoretical posts here that talk about normal interactive projects, not about interactive videos, I will continue to point at published cptx- projects as ‘interactive movies’ to show the difference with less interactive 'interactive video'. A standalone interactive video can be nice. However I honestly believe that the combination of interactive video slides with static interactive  slides in a cptx project is more powerful. Later on I will try to show with use cases what I mean. These tips are for 'interactive video' only. 

The first version of interactive video offers the possibility to insert:

  • Bookmarks: which out of the box can be used with the new command ‘Jump to bookmark’ to realize some branching often based on answer to  knowledge check slides.

  • Overlay content  slides: which appear at certain frames of the video on top of the video (can take up part of the screen, with  in a dimmed version of the video in the background). Most Captivate features can be used on those content slides, including advanced/shared actions.

  • Overlay Knowledge Check slides: which are based on the quizzing master slides.  Their appearance is the same as for the content overlay slides. Scored quiz slides are not possible.Contrary to the overlay Quiz slides in a 360 slide, these Knowledge Check slide do honor the used theme, their style can be full controlled. However, you cannot use scored Quiz slides in overlay (which is possible in a 360 slide). 

I will post lin the future a full description of the timeline of interactive video slides, and line up the differences with a normal video. An interactive video is always a slide (synchronized) video, never an event video. Consequence: interactive video is not possible in a fluid box which can only support event video, nor in the state of a multistate object.

In this blog post, I’ll offer some tips for using and enhancing the present functionality of interactive video. I posted an interactive video, as illustration in this article . Explanation of the tips is based on that example, I recommend to watch it if you didn't had time yet.

Tips

Tip 1: Prepare Master Slides for Overlay slides

Interactive video supports two types of Overlay slides; Content overlay slides and Knowledge Check  overlay slides. Both types can have the same size as the project size, but I prefer to have a smaller size for the overlay slides, so that the video itself remains visible in the background (dimmed). That can be done by using a duplicate of the Blank slide, on which you insert a shape with a smaller size than the slide, as background for your content or questions. As with normal content master slides, you can create as many as you need.  Have a look at the 3 master slides used for the example video mentioned before:

Next to the Blank master slide you see two content master slides :

  • OverlayTip: has a bubble shape, semi-transparent as background; the white space surrounding the shape will be ignored in the overlay and show the dimmed video.

  • OverlayWarn: has a different shape, less transparent and also white surrounding space.

The Quiz master slide which I used is a duplicate of the MCQ... master slide. It is necessary to use such a duplicate because you need all the embedded objects with their functionality. I used a rectangular shape as background, not transparent.
Beware: 

  1. use a non-responsive theme, because the Quizzing master slides in a Fluid Boxes theme have a setup with fluid boxes. 

  2. when creating a slides based on this master slide, you need to choose Knowledge Check slides, because normal Quiz slides cannot be used as Overlay slides for an interactive video.

After insertion of 5 overlay content slides and one KC slide, the Filmstrip looks like this (watch the hierarchy symbolized by the smaller size of the overlay slides, and by the icons at the bottom). :

Tip 2:  No fixed duration but a Close button

To me Interactivity means to offer as much control as possible to the learner. Some need more time, some want to proceed quicker. That is why I don’t like the fixed duration for Overlay content slides - which is the default setting.  No problem for the Knowledge Check slides,  the Submit button (with a pausing point at 1,5secs) takes care of keeping the slide available as long as wanted. Same would be the case for a slide with a D&D interaction or when using an interactive learning interaction.

For the static content slides however you need to pause the slide. To achieve that with minimum effort,  I used a shape button on the two master slides OverlayTip and OverlayWarn.:Look at this screenshot, where the Close button is at the bottom left:

For shape buttons on a master slide, the pausing point visible at the end of the Timeline is just an indicator. It will not appear in the Timing Properties because smart master objects have no timing. However, in the default setup, the shape button will pause at the end of each slide, hence the indicator. Look under the Actions tab for the shape button on the master slide. 

The action triggered by the Success event of that button is very simple: ‘Continue‘, to release the paused playhead. Since the pausing point is at the end of each overlay content slide, it will close immediately and the video continues.

Tip 3: Information button

That button is available for the full duration of the project, from the second (video) slide on. . I described the workflow in an older post, which dates from  CP2017: Interactive Video Buttons but is still valid for the present version. It is a simple click/reveal button, which pauses the video and has a close button. That close button takes care of hiding the information and releasing the video playhead.

Tip 4: Navigation Menu

With the Menu button the learner has a TOC to bookmarks available, to review only parts of the video. I described my workflow in this post.

The menu button has a custom state, which is used to close the menu (similar to the Pause/play button of the example video). It triggers this action:

The menu items are hyperlinks triggering advanced actions, which jump to the wanted bookmark and close the menu. As mentioned in the past, for some weird reason the option 'Execute Shared Action' is not available for hyperlinks, or I would have used a Shared action instead of duplicate Advanced actions.

]]>
ir. Lieve Weymeis
tag:blog.lilybiri.com,2013:Post/1354677 2018-12-18T14:22:05Z 2018-12-18T14:22:05Z Custom Play/Pause button - version CP2019

Intro

Several years ago I have already created a blog about this topic.

Meanwhile Captivate has added a lot more features: multistate objects, changes in system variables, easier commands etc. Since that question often appears on social media and the old post is also still visited daily, time to offer an easier way. It is also a use case illustraing use of a system variable, following to my recent posts about system variables.  Here you'll discover how you can use an Interactive Video to as training asset for a workflow. It is up to you: video or step-by-ste textual instructions with screenshots.

Why do I prefer a Shape Button?

Buttons have InBuilt states and can have supplementary custom statesI. You can find more info in this  article: States and State Commands

Captivate has 4 types of buttons, which  have 4 InBuilt states: ‘Normal’, ‘Rollover’, ‘Down’, and ‘Visited’. They can all have extra 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 (have a look at: 1 action = 5 toggle buttons).  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 button 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 prefer one of the older button types, you would need a button on each slide.

Workflow - Interactive Video

The movie is based on a Video Demo. The CPVC-file was captured at 1280x720. It is embedded as interactive video in a cptx-rpoject with a resolution of 1024x627. The ratio widht/height is not the same because the synchronized interactive video has a top control bar. I extended the functionality of Interactive video, you'll find some tips in my next post.

I will not embed the video in this post, it would be too small. I offer you two links: the first is to the unscaled published movie, where you'll have the best quality which is important to watch the sometimes very tiny features of the Captivate UI. If you want to see it oscaled to your browser resolution, you can use the second link, which is to a rescalable version. It may look more blurry on a very big screen, but you need to use this version if you want to watch on mobile devices:

Fixed resolution: Custom Play/Pause

Rescalable: Custom Play/Pause


Workflow Step-by-Step

Step 1: Creation of the Shape button

You have to know the  situation at the start of the  course. By default (after having launched the course) this will be 'Play’ situation. Consequence: the start look of the Shape button has to be ‘Pause’.  It is not possible n Captivate to create states for a shape button on a master slide . You have to create that button on a normal 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 and/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 name that state  (I use 'Play' as label)
  • In this custom state fill the shape with an image and/or text you want to show when the course is paused, to resume Playing.

Here is a screenshot of the states I created in the video:

Step 2: 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’.

2. 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:

For a Fluid Boxes project: object timed for the rest of the project is normally not possible. I explored and found it iw possible but with the requirement that you use the same master slide for all content slides.

Step 3: Create 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:

Pausing Captivate's Timeline

Pausing Timeline and Audio

You would have the same  situation  with the Pause button on default Captivate playbars. It is not due to the fact that this is a custom button.


]]>
ir. Lieve Weymeis
tag:blog.lilybiri.com,2013:Post/1349622 2018-12-04T10:45:11Z 2018-12-10T09:55:44Z Discover/Use Captivate's 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: 

1 action = 5 toggle buttons

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.

]]>
ir. Lieve Weymeis
tag:blog.lilybiri.com,2013:Post/1347324 2018-12-04T10:32:26Z 2018-12-07T05:15:31Z Discover/Use Captivate's 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 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 of System Variables - table

You can download the table from this link.

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 second post.  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.

What Now?

Have a look at my next blog post, where you'll start to take control of your courses with the system variables of the Movie Control category. It is a good 'step up' to challenge your next goal: using advanced/shared actions.


]]>
ir. Lieve Weymeis
tag:blog.lilybiri.com,2013:Post/1344832 2018-11-18T17:05:09Z 2018-12-07T05:15:28Z About State Commands and a Progress Bar

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!


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). You have a lot of freedom for custom states: contrary to the InBuilt states, nothing is locked tto the default normal state. 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 commandif 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. 

]]>
ir. Lieve Weymeis
tag:blog.lilybiri.com,2013:Post/1339241 2018-11-09T11:12:54Z 2018-11-12T22:16:42Z Hotspots in non-VR project? Workflow 1

Why?

This is not a blog post for intermediate or advanced users. Since CP2019 is released, with the hotspots for 360 images and videos in a VR project or a normal project, I see the same question appearing regularly: why cannot we have that feature for a 2D image? Hence my idea to offer you some possible workflows with a step-by-step explanation and a free downloadable project file. This first post shows a project where the functionality of VR hotspots is being duplicated as close as possible:

  • When user clicks a hotspot, text, image and/or audio will appear, and automatically disappear after a specified time (here you can also use video, which is not possible in a VR project)
  • The hotspots get a checkmark after having been clicked.

However only the status ‘Exploratory’ is used, not the ‘Guided’ status. I would be able to reproduce that as well, but the workflow will be more complicated.

Example movie

Watch the result in this movie with 3 slides. After the title slide you’ll see the hotspot slide. The last slide lists up the steps explained below, if you want to create the workflow from scratch. I will also offer you the project file, you can also copy/paste the hotspot slide to your project, thus allowing to skip some steps.

Copy/Paste Slide

You can download the project file (created in version 11.0.1.266) from this link.

You can copy/paste the hotspot slide (slide 2) to your project. Replace the image. You can edit the design of the hotspots (names start with HS_), change the content of the states in the Multistate object labeled SS_Info.

Have a look at the Library, folder Shared Actions. You’ll see that it has been used 6 times, once for each hotspot. If you change names of the states in the multistate object, you will have to edit that parameter. Same for the duration. The other parameters are always the same for each hotspot: the name of the multistate object and its Normal state.

Steps, from scratch

Create hotspot

I used a shape button as hotspot. It has several advantages over the older type of buttons. You can choose any shape or create a custom shape (here I used just a circle), you can fil it with any color from your Theme Colors as solid color or in a gradient (I used a gradient) or even fill the shape with any image. Moreover you can type text in the shape. I kept the hotspot very simple: just a question mark. But you can replace the text or the fill as you like. It is important that the shape button – hotspot has at least two InBuilt states: the Normal and the Visited state. You could also use the Rollover and Down state, which I deleted in the example file/movie. This is the state panel of the hotspot:

Duplicate hotspot

I labeled the used style as ‘Hotspot’. However, the Visited state is not part of the style (which I regret a lot). For that reason I did duplicate the hotspots (CTRL-D). In the project the names start with HS_.  In the example movie you’ll see 6 hotspots.

Contrary to the hotspots in a VR project, these hotspots have a timeline. I kept the default setup: duration of  3 seconds and pausing at 1.5secs. That pausing point is where where the playhead will pause, exactly like for the hotspots on a VR slide.

Multistate object for popups

I put all the popups in one multistate object which is also a shape: it has 1 state more than the number of hotspots. The Normal state has to be ‘invisible’ by setting the Alpha for Fill = 0 and the stroke width = 0. Each of the following states has the assets for one popup. You will see that I have states with only a text container (background in any color, partially transparent), but some have also an image, audio and one even has an event video (which is not possible on a 3D slide).  You can choose any location, it is not locked to the Normal state location. In the example file, the Object states for this shape looks like this:

Import Shared Action ‘HotspotWorkflow1’

Use File, Import, External Library and open the file you downloaded. Find this shared action in the floating Library panel which will be opened. Drag that action to the Library of your project in the folder Shared Actions. More info about external libraries in this post.

Add shared action to hotspots

Select a hotspot. In the Actions tab of its Properties panel, for the Success action choose ‘Execute Shared Action’. Click on the tiny button {p} to define the parameters which are:

  • Multistate object with the popups (labeled SS_Info) in my example file. That parameter is the same for all hotspots.
  • State: having the info to pop up for that particular hotspot
  • Time you want to leave the popup on screen, can be different for each hotspot
  • Normal state of the multistate object, is same for all hotspots.

Here is one example screenshot for the hotspot referring to the Virtual Reality project:

Conclusion

Maybe you’ll already feel that this workflow could be optimized. I would prefer to give the learner control over the time he needs to watch the popups by adding a close button. Or maybe cover up the distracting background in a lightbox style? What about the next button only appearing when all hotspots have been clicked? Or a warning if not every hotspot has been visited when the learner clicks the Next button? Lot more workflows are possible, let me know which one you would prefer?

]]>
ir. Lieve Weymeis
tag:blog.lilybiri.com,2013:Post/1340102 2018-11-09T11:12:17Z 2018-12-07T05:15:22Z Hotspots in non-VR project - workflow 2

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. 

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 (1024x627) 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).

 

]]>
ir. Lieve Weymeis
tag:blog.lilybiri.com,2013:Post/1339237 2018-11-02T11:27:31Z 2018-11-02T11:27:31Z How to use Custom Effect in 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.


]]>
ir. Lieve Weymeis
tag:blog.lilybiri.com,2013:Post/1336943 2018-10-29T18:09:32Z 2018-10-29T18:09:33Z Timeline for 360 slides (static/video)

Intro

A while ago I published several blogs and interactive movies (created with Captivate) about the ins and outs of the Timeline in Captivate, which is still the feature that causes most frustrations because of lack of understanding. With CP2019 some new features are added to that timeline, for the VR projects (360 slides) and for interactive video. Looks like it is time to explain those new features. This blog has focus on the timeline in 360 slides inserted in a non-responsive project.  Those slides are not able to have overlay Quiz slides as is possible in a full VR project. In a future post I will talk about the overlay Quiz slides and their timeline. I published recently a short post with some tips for a VR project.

360 slides

In a non-responsive project you can use the big button Slides to insert a slide which has a centered button to choose either a 360° static image or a 360° video. It is not possible to drag a 360 item to the slide from the Library, you need to use that button.

The 360 image is inserted as background, whereas a normal image inserted on a slide will have an individual timeline. In the Library you will see the images in the Background folder, and you have to use 'Find Background'.

Static 360 image

Editing a 360 slide is more limited than editing a normal slide. You will not have an Actions tab in the Properties panel, which means that you cannot use the On Enter/On Exit events for the slide. The Big Button Bar is mostly dimmed. There are only two assets that can have a timeline as you are used to:

  • Audio (under Media button) can be added as slide audio, which will have its timeline as expected under the slide timeline. Slide audio can be paused on a 360 slide by a hotspot, just like by any interactive object: you find the feature 'Stop Slide Audio' on the Options tab of the hotspots (including Character which is also inserted as hotspot). 
  • Label (under Text button): can be added, formatted and timed. It can be used for titles or for instructions that need to be available even if the playhead moves. Labels can be moved and will be 'distorted' to fit in the spherical image if necessary. IT is not possible to apply an effect on the labels. 

You will see 'Characters' available' under the Media button as well. However inserting a character will create a hotspot where the character is used as custom image.  It is not possible to resize the image, only the location. In most cases the characters will be very big due to that lack of editing.

The functionality of a 360 image is mainly in the so-called  'HOTSPOTS' to be inserted from the big button with that name. Referring to existing terminology, a hotspot is a new type of  interactive object similar to click boxes, (shape) buttons. However hotspots have a timeline with zero duration. In the timeline the visual representation of a hotspot is  either a half circle (brownish) if the hotspot is on the first frame of the slide, or a full circle (when on a later frame).  A selected hotspot has a blue circle surrounding the normal icon. In the following screenshot Hotspot2 is selected. The generic names were kept, but I have changed the stacking order by dragging hotspot 2 on top of Hotspot3.  Each hotspot is marked on the stage and after publishing by one of the SVG's, a custom image or a character as mentioned above. 

Default setting for each hotspot is to keep the timeline paused. For simple actions triggered by buttons in normal slides, the default setting is 'Continue playing the project'. For the hotspots, that setting is unchecked by default (if you trigger 'Play Audio' with a hotspot it will change as expected to Continue movie after audio is finished).

If you leave that option unchecked, the playhead will remain paused. If you use the option 'Explanatory', this means that all hotspots sharing that frame will be visible to the learner. In some cases you'll have only hotspots in the first frame (look at the sample project), but to avoid overload in a complicated image, you could choose to have groups of hotspots in a later frame. You see an example in the screenshot of the timeline inserted earlier: two hotspots are in the first frame and 3 more in frame 45(1,5secs). In that case you have to release the playhead, which can be done in two ways:

  1. By checking the option 'Continue playing the project', not so interesting if you have set up the image in 'Explanatory' mode where the earner can choose the sequence of clicking the hotspots. But it can be a solution in 'Guided' mode.
  2. By adding a hotspot with the action 'Continue', which is available in the dropdown list. That was the case for the screenshot above: it has a character hotspot (with attached audio) and a second Continue hotspot. One of the hotspot icons is clearly recognizable as a 'Play' icon.
  3. By showing the playbar (and maybe instruct the learner to click the Play button). Both commands 'Hide Playbar' and 'Show Playbar' are available to be triggered by a hotspot, but I was never able to use them using a hotspot in a slide. However you can show the playbar by default or use a slide event on a previous static slide.

As I explained in previous articles, the Timeline panel is also a Layers panel, defining the stack order of objects. In a 360 slides the stacking order is not always respected: even if you put a label on top of the stack, it will always be covered by any hotspot in the same location.

However for the hotspots it also has a third functionality, only for Guided mode. The stacking order will define the sequence in which the hotspots are presented to the user: starting from the bottom. In the example screenshot, at frame 45 hotspot 2 will be presented before hotspot 4.  You can change the order by switching the layers.

The dropdown list with actions to be triggered by the hotspots is more limited than for another interactive object. I already mentioned the command 'Continue' and its possible use. There are several navigation commands (previous, next slide, jump to slide and to last visited slide). There is the Exit and No Action commands which are self-explanatory. The most useful  commands are :

  • Display Image:  the image will be displayed for a duration specified in the Properties panel, Actions tab. You cannot choose an image in the Library, and once the image is imported it will not appear in the Images folder of the Library but in the Backround folder. Images folder only has the SVG icons of the used hotspots, whereas the SVG folder remains empty. Once the image has been displayed for the chosen duration,  the hotspot is converted to a visited state but remains active.  It is possible to click another hotspot before the duration of the first has ended. If you want all displayed assets to remain you have to choose a long duration for each of them.
  • Display Text: behaves the same way as Display image, you need to specify the duration. Very little formatting is possible, hence a suggestion in a previous blog post to replace Text b: y images with text in the wanted font and with controlled colors for the background. Hotspot will also have a visited state.
  • Play Audio: you can import a clip, or get it from the Library (they are stored in the Audio folder). No need to define a duration, once an audio clip is started it will continue playing unless you launch the command 'Stop Triggered Audio' from another hotspot.  If you have several hotspots using the Play Audio command and the learner clicks next hotspot before the first audio is finished, that first audio will automatically be stopped. That is the normal behavior of those audio clips as I explained in 'Pausing Timeline and Audio Clips'

360 Video slide

When you insert a 360 video in a 360 slide, it will end up in the correct folder 'Video' in the Library (under Media). I couldn't find a 'Find in Library' option. The video is represented the same way as a Video Demo slide or a FMR slide in a software simulation, it is merged into the background of the slide (mention for Usage in the Library uses also 'Background of slide).

Of course, the location of the playhead is now more important than for a 360 image. You can have an image where only the first frame is used to stack all the needed hotspots. However that makes no sense for a video, where movement is crucial. It will not be easy to create an engaging experience if the video has already audio embedded, because each hotspot will pause the video, which means also the embedded audio. Adding slide audio is possible the same as for a static 360 slide. However synchroniang will not be easy neither.  I need more exploration of this type of slides, but here are some first tips:

  • Try to offer audio only by using hotspots. I start the video with an inserted character that is set up to play audio, and have the video continue immediately after the audio is finished.
  • If you have only one hotspot in a frame, activate also the option 'Continue playing the project' whether you use Display Image/Text or Play Audio.
  • If you have more than one hotspot in the same location, and you use the Guided status, keep that setting only for the last hotspot to be presented. For the Explanatory status, you probably will need the playbar or a hotspot with the Continue command.

In the screenshot you see the video slide in its first frame. That frame has a character (selected) as hotspot which will play auio. The label indicates what the learner has to  do, but cannot be put on top of the character. When the audio is finished the video starts playing. It will pause again at 4.3 seconds which has two hotspots. The last hotspot has also Continue selected, status was here Guided.


]]>
ir. Lieve Weymeis
tag:blog.lilybiri.com,2013:Post/1333343 2018-10-19T08:14:02Z 2018-10-19T08:14:03Z Available Events in Adobe Captivate

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

First column (Event) identifies the event, second column (Assign action) shows in which Properties panel (PI) you can indicate the action to be triggered, third column is A Description. When necessary you’ll find some comment/use cases in the last column, which also mentions the possible limitations for the event. 

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.

]]>
ir. Lieve Weymeis
tag:blog.lilybiri.com,2013:Post/1332833 2018-10-17T16:32:31Z 2018-10-17T16:32:31Z Tips and Tricks for VR projects.

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 organisation 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.  You will have to use a normal (blank) project, as far as I know it is not possible in a responsive project with fluid boxes.

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 (tp be inserted from the big button Slides), 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. You can use multiple slides of that type, also 360 video slides, but no static 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.

]]>
ir. Lieve Weymeis
tag:blog.lilybiri.com,2013:Post/1324071 2018-09-21T17:14:34Z 2018-09-21T17:14:34Z Interactive Video, Navigation Bookmarks

Intro

Interactive Video is without any doubt my favourite new feature in Captivate 2019. It makes adding some interactivity to a passive video very easy compared with the old workflows which I used to simulate such an interactive video in previous versions. I had in mind to blog about some possible workflows that could add even more functionality. A user posted a question today about Bookmarking for Navigation. I had already some workflows in mind, and want to share one of them with you. I tried it out on the sample project provided with Captivate. That project has only two bookmarks, which are labeled 'ExerciseBenefits' and 'O3Jump'. the workflow can easily be extended to more bookmarkst. We'll create a shape button to pop up a menu. 

Popup menu

To create the menu, which is hidden when the video starts, I used a shape,  but you can use a text caption as well. I filled that shape with one word for each of the bookmarks. In this case I used the words 'First ' and 'Second'. Those words will be indicated as hyperlinks. Hyperlinks have a lot more functionality than just pointing to an URL, as I explained in some blog posts.

Close button

Dropdown menu

The menu for hyperlinks is missing some options (which I regret): you will not see the option 'Jump to Bookmark' nor 'Execute Shared Action'. My only choice was to use the command 'Execute Advanced Actions'.  That means that you have to create as many advanced actions as you have bookmarks. They are very simple oneliners, but with a simple action or a shared action it would be a better workflow.  It is also impossible to prevent release of the playhead, but that is not really an issue in this case since we are creating navigation actions, and the video may continue to play when it gets to the chosen bookmark.

The shape with the hyperlinked texts needs to be invisible in output, and timed for the rest of the slide. If you have multiple video slides, and you want one menu for all videos,  time it for the rest of the project. Because the overlays are possible, you'll not have any problem to have the shape being visible on top of the video.

Menu Button

The menu button (which you could see in the screenshot with the popup shape) is a shape button. I added a custom state 'Close' to the 3 InBuilt states, where the label is changed from Menu to Close. To avoid confusion I took out the label from the Rollover and Down state which are used both for the open and closed version of the button:

The button is a toggle button, to track the visibility of the popup shape I needed a user variable (Boolean) which I labeled v_visib as usual. Default value = 0, which means the popup shape is closed and the Normal state of the button is active. When the button is clicked to open the popup, the state will change to Close, and the variable will be toggled. This leads to a conditional action which I have described/used already many times:


Conclusion

I hope you liked this workflow which is not included by default. You can add this toggle button to other buttons like an Audio/Mute and a CC button. If you missed it, you can find a workflow for that type of buttons in this blog post:.



]]>
ir. Lieve Weymeis
tag:blog.lilybiri.com,2013:Post/1322544 2018-09-17T13:12:21Z 2018-11-01T19:20:00Z Answer key for Survey

Intro

Once in a while a question like in this thread pops up:

“….students will need to answer short answer questions.  They will not be right or wrong, they will be their thoughts.  Is there a way to have all their answers compile into a final screen at the end?”

It seems logical to use short answer quiz slides, in Survey mode, for this use case. However I prefer to use one of the Learning Interactions, ‘Scolling Text’ for reasons I want to explain in this article, by describing both workflows with their specificities. It is up to you to decide which you’ll use. In both workflows variables will be important, hope you are familiar with them.

Short Answer quiz slides, Survey mode

Setup quiz slides

No right/wrong answer means that scoring has no sense, change the stqtus of the quiz slide to ‘Survey’. Nevertheless a score slide will be inserted but you can hide it easily.

Answers to quiz slides are stored in a reusable variable, cpQuizInfoAnswerChoice.After a short answer question the variable will contain the text typed in by the learner in the short answer field. Reusable means that the value will change after each short answer slide. Since we need to store each answer safely (for reusing on the slide at the end), you will need:

  • to create a user variable for each short answer question; I will label them v_First, v_Second, v_Third for the example you’ll see in the demo movie;
  • the default answer area is pretty small (one line), if you expect longer answers, make sure to increase the height of the answer area. It is not possible to edit the used master slide because it applies to multiple types of quiz slides;
  • the content of the system variable cpQuizInfoAnswerChoice is updated when the Submit button is clicked; it has to be transferred to the appropriate user variable, using the After Survey event; for that purpose I created a shared action with two commands:
    Assign v_First with cpQuizInfoAnswerChoice
    Go to Next Slide
    only parameter is the user variable (here v_First)
  • apply this shared action to each of the question slides, with the appropriate parameter.

Setup Answer Review slide

In the example movie I created one text container (shape or caption) and inserted the three user variables in it. Be careful to increase the number of characters to be shown when inserting the variables. You’ll also have to leave enough space for each variable. Of course you could create multiple text containers and/or have the answers distributed over multiple slides.

Using Scrolling Text interactions

A limitation of Short Answer quiz slide is that you can have only one answer per slide. When using a Scrolling Text interaction you can have several question on a slide as you can see in the example movie.

Setup interaction

Setup of the first answer box can be seen in this screenshot:

Two important items are indicated  in the screenshot:

  1. You have to type in the name of the variable to be used. There is no way to use a dropdown list. Beware: you have to create the variable, it is not created uatomatically.
  2. To allow text to be typed in by the user, the checkbox ‘ReadOnly’ has to be unchecked. By default it is checked.

It would have been possible to enter the question in the interaction, instead of having it in a separate text container. I preferred not to do it. Reason: if the user adds the answer, instead of overwriting the question, the variable will contain html tags, like <br>.

The Submit button, which you’ll see on the slide, triggers  the (default) action ‘Go to Next Slide’.

Since I reused the three user variables in this part of the example, I have created an advanced action triggered on Enter to empty the user variables with the technique described in this article.:

Setup Answer Review slide

Very easy: duplicate the slide with the interactions, and take out the On Enter action to reset the variables. The interactions are now populated with the given answers. Moreover the learner can still edit those answers, because of the option ‘ReadOnly’ being unchecked. If you don’t want it, check the option ‘ReadOnly’ on this duplicate slide.

It is also possible to use a similar slide for the first workflow with short answer quiz slides. That will be useful if you want indeed to allow editing the answers.

Example movie


]]>
ir. Lieve Weymeis
tag:blog.lilybiri.com,2013:Post/1306585 2018-07-27T23:09:40Z 2018-07-27T23:09:41Z Rare Tips for Shared Actions

Intro

It is not a secret that I am a big fan of Shared Actions. A project without at least one shared action is a big exception to me. From what I hear and read, lot of you don't realize how much time you can save with those mysterious action. This short article will offer some ideas where Shared Actions are used for (maybe) a totally different situation than you expect.

1. Creation of Variables

If you are reading this post, it is very likely that you use system variables as well as user variables. Do you create user variables in each project, and include a proper description and eventually default values?  I have a list of variables which I use very often in projects, here are some examples:

  • v_null: an empty variable used to check if Text Entry Boxes remained empty after a learner clicked its Submit button, or to reset the variable associated with a TEB.
  • v_counter: as the name tells to track a number of clicks, attempts....
  • v_visit: for situations where the content of a slide has to be different on a later visit, you want to track if the slide has been visited
  • v_one, v_two, v_three....: number of variables that can be used for different use cases, like tracking clicks on hotspots, finishing chapters...

Knowledge fact: when you import a shared action in another project, variables not defined as parameters, will be created including the description and default value.

I have a shared action with a list of Assign commands, one for each of those often used variables. It doesn't matter what you assign at all. I drag that shared action from my external Library with shared actions to each new project. Variables are ready for use, even as parameters in other shared actions. 

  

2. Shared Action without Parameters

Sounds very strange, because the reusability of a shared action is based on parameters? I already gave a first example of such a parameter-less SA under 1.  It is much safer and easier to transfer a shared action to another project than an advanced action. You use the shared action directly or convert it to an advanced action if you prefer (maybe for more editing). Here is an example:

 I use this action to calculate the reference time in seconds (to be used later in calculations) of a frame, mostly the first or last frame of a slide. Defined as a shared action, it needs no parameters. Once dropped into the project Library, I can use it for any frames where I want a reference time.

3. Shared Action as Template 

You can copy an object or a slide, which has advanced actions attached to a new project. But that is not always working great. If you have navigation in the advanced action 'Jump to Slide', that command will often be reset to 'Continue' if that slide is not found. Same for objects, variables etc. 

Less known is that any shared action can be used as a template to create an advanced action. In the top left of the Advanced Actions dialog box, you are used to see 'Blank' which is the default template for an action. Open the dropdown list, and you'll find all shared actions in the project as extra templates:

Choose one of them, you'll have to fill in the parameters, add a name, edit the commands (delete, add as you want) and save as an advanced action. 

Example: a shared action triggered On Enter for a dashboard, checking a number of tracking variables and showing something special after all variables prove that everything has been visited. You can set up the shared action for 4 variables. If you need less or more variables, convert the action to an advanced action and edit it!

What about you?

Do you use shared actions? Did you like these tips? Do you want to have some training about variables/advanced/shared actions?  I love seeing comments on my posts, and promised: you will always get an answer!


]]>
ir. Lieve Weymeis
tag:blog.lilybiri.com,2013:Post/1304708 2018-07-20T17:25:51Z 2018-07-27T17:44:24Z Rollover in Fluid Boxes?

Intro

One of the type of objects that is indicated by the tracker as not compatible with HTML output are rollovers: rollover caption, rollover image, rollover slidelet, rollover shape. However if you ignore that warning for a non-responsive project, the rolloverrs will work fine when used with a mouse on a desktop or laptop screen (with the exception or the slidelet, which you should avoid at all times). Its functionality will not work on a mobile device, even not when using a stylus. But the 'mouse' users have that functionality.

However when you create a responsive project using Fluid Boxes, the options for inserting a rollover are greyed out. There is no way to add them. Is there a workaround to have rollovers for desktop/laptop users? That question appears once in a while in forums or social medai. In this post I will talk about my tentavies to mimick a rollover..

Example Movie

I cannot insert a responsive movie in a blog post. Use this link to have access to it. Try it out on a laptop or desktop screen: roll over the buttons in the left and in the right most Fluid box. You'll see rollovers for the big Blue buttons which do not have a real button functionality. The red buttons on the right are active, a hint message appears when rolling over the buttons. You can click those red buttons. This is a static screenshot of that slide (which appears after the poster image and the first slide):

If you try this on a tablet or a smartphone, rollovers will not appear. I tested on iPad and on an Android (HTC) phone.

First Mimick: Hint Messages

You did see the Hint messages for the red buttons when hovering over them. If you use a tablet or a phone they will not show up. Those buttons have the InBuilt States 'Rollover' and 'Down', but only the Down state will be visible on those mobile devices. This is the Object state panel for the second button:

For interactive objects it is possible to check the option 'Hint message' in the Actions tab. In all themes included with Captivate those messages are no longer in a caption but in a shape. The hint message appears wh

There are some problems with this solution:

  • Buttons and Hint messages will share the real estate in the (normal) Fluid Box.
    That is a waste of space especially for mobile screens where those hints never appear. and the buttons may shrink too much as you can see here:
  • I tried to use a static fluid box for each button+hint to be able to stack the Hint message over the button but that leads to very ugly flickering and is excluded.
  • You don't have control over the exact size of the buttons, and certainly not over the HInt messages (look at the screenshots above). This may be not so important since you'll only watch on a big screen, but nevertheless.

Second Mimick: Rollover State

With the blue shape buttons I demonstrated that you can fill the Rollover state with Text (mimicking a rollover caption), with an image (mimicking a Rollover Image) and with both. Here is a screenshot of the second shape button, having an image and text:

The effect is quite nice, provided you use rather big shape buttons as was the case here:

There is a possible problem when using images: they can be distorted if the option 'Maintain Aspect ratio' is unchecked. That was the case in the example, and can lead to distortion:

Shared Action for Red buttons

The active red buttons trigger a shared action which will change the state of a shape (showing explanations), add a star to a progress indicator and have it animated. If you have read blog posts written by me, you know that I am a big fan of Shared Actions.


]]>
ir. Lieve Weymeis
tag:blog.lilybiri.com,2013:Post/1297412 2018-06-29T07:39:21Z 2018-06-29T07:39:21Z Tips to localize a quiz

Intro

This article will not be interesting for you if you always create courses in the same language, and you have Captivate in that same language. In my casen Captivate is not released in a Dutch versoin, and moreover I sometimes also need to create French courses, along with English courses. Practical tips to save time when localising are always welcoem. Today i will focus on Quizzes. I have an English version of Captivate but want to create a quiz in Ducht and in French. What is the work flow?

Quiz Preferences

Start by localising Default Labels  in the Quiz Preferences. That dialog box allowas you to translate messages and labels on buttons. You don't have to trabslate labels that you'll never use. As you can see in this screenshot, I never use Skip/Back, Submit All nor the Timing message. 

After savibg the Preferences, usie File, Export, Preferences. You can import them later on in any project where you need the same language for a Quiz.

Master slides

The changes you made to the labels are not relected in the quizzing master slides, which is a pity. It can be necessary to increase the width of the buttons if the new labels are considerably longer than the original ones. I will not bother about that now, nor about editing any of the texts, like "True" and "False" which need translation. The embedded object 'QUestion title' is a placeholder, will be replaced by the questiob type on quiz slides, you cannot even edit it if you want those indicators translated. All can be done with:

For the score slide, you have to edit the master slide if you want the field labels to be localized.  Those labels are not included in Quiz Preferences which is too bad. As master slides are part of the theme you can include them in a custom theme. It would be great if the labels translated in Quiz Preferences were included as well, but that is not the case.

GIFT text

Several versions ago the possibility to import a GIFT file to create quiz slides was introduced. That is not only a great way to import lot of questions, but also to localise the questions. I include a txt file created with the GIFT rules, to allow you to try out this feature (and to learn some Dutch ).  Here is an example of a question, MCQ with multiple corect answers and partial scoring:

// === Multiple Choice MA ===
::Meerkeuzevraag (meerdere correcte antwoorden) ::
Welke componenten maken deel uit van een thema?
{
~Aangepaste Effecten
~%30%Master Slides
~%40%Objectstijlen
~Taal met spellingcontrole
~%30%Kleurenpalet
}


After importing the GIFT from Quiz menu, the rhird question shown above, looks like this:

Watch how the Question title placeholder now has a Dutch text. The feedback messages are translated as are the labels on the used buttons: 'Submit' became 'Indienen' en 'Clear' is now labeled 'Wissen'. The tiny progress indicator is translated as well. You may have to check the score, because the partial scoring will have rounded numbers. In this case it is not necessary: 3 points go to the second and fifth answer, 4 points to the third answer. 

Final edit T/F slides

Something cannot be done automatically, which is the translation of the words ‘True” and “False” on that type of slides. For that finishing touch, which can only be done after inserting the Quiz slides, I use the Find and Replace functionality. 



 

]]>
ir. Lieve Weymeis
tag:blog.lilybiri.com,2013:Post/1291679 2018-06-09T10:20:57Z 2018-06-09T10:20:57Z Quiz Slides with Fluid Boxes

Goal

Today this question appeared on the forums:  "Easy way to give better feedback in Fluid boxes in the Quiz"

So for the second time in a couple of days a blog post based on such a question. If you missed my workflow to tweak Feedback messages for Drag&Drop, here is the link.

That question is related with a blog post I have been writing about the setup of Fluid Boxes in Quizzing Master slides. If you have read that post, it explained that all feedback messages on those master slides are stacked on top of each other, and for that reason that Fluid Box needed to be converted to a Static Fluid Box. I didn't mention in that post the workflow I am using to create individual feedback messages on the quiz slides which is the purpose of this short article. You can see it as a add-on for the article about fluid boxes in Quizzing master slides, and maybe also show some features of that static Fluid Box, which are not very well documented but which I discovered when trying to find the easiest workflow.

Workflow

Before starting the work flow described below, check the quizzing master slide. Make sure the used styles for the messages are correct and that all the message containers have the same size and are aligned. For the packaged themes that is not always the case.

You have to know that it is NOT necessary to unlock an object from a static fluid box before moving it! That is only the case for the normal, non-static fluid boxes. In static fluid boxes the objects are not glued to the fluid box in the same level. You can even move them out of the fluid box.

Remember: if you screw up something when trying out the workflow, you can always return to the normal situation by clicking the button 'Reset Master Slide' in the Properties panel of the slide.

Step 1

Select the top message. In the default stacking order it will be the Success message. Edit the text. If you are seeing the text of the other images below, check the opacity of the fill, and increase it. 
After editing keep the message selected and move it out of the way. I mostly use the shortcut key CTRL-UP in this case. With each use of that shortcut the message will move up 16px (which is the default size in the grid). Be careful: the message will be over the fluid box containing the answer area. It will not snap to that fluid box, but you'll not be able to select it anymore. That doesn't matter.

In the used theme shape for this message had an Opacity = 0. I changed it to 80% to be able to read and edit the text. No need to  reset the style, will be done in the last step.

Step 2

Edit the next message, in default setting it will be the Incorrect message. 

Step....

If you have more messages, move the second message up, edit the third etc..

Last Step

Pretty easy: reset the master slide as shown in the first screenshot.

Conclusion

It remain a cumbersome workflow, but at least you don't have to unlock from the fluid box as many tell, nor getting them back into the fluid box. If you looked at the thread you see those unnecessary steps mentioned by the Adobe chat and another user. Probably misunderstanding the differences between static and normal fluid boxes. It is still a new workflow, Fluid Boxes, and really quite different from designing a non-responsive project or even a responsive project with Breakpoints.

 

]]>
ir. Lieve Weymeis
tag:blog.lilybiri.com,2013:Post/1291016 2018-06-05T14:38:52Z 2018-06-05T14:38:57Z D&D Feedback messages

Intro

Yesterday an interesting question appeared on the forum concerning Drag&Drop

The second question is answered in that thread, was about setting up the Accept for the drop target as I have already explained in previous blog posts. The first question however is at the base of this short article. I quote:

"Is it possible to show separate messages for cases such that the user not selecting the answer (Choose an answer msg) and selecting the wrong answer (Incorrect answer msg).  It currently shows 'Incorrect Answer' msg for both cases."

I asked for some details about the setup: 

  • Several drag sources, only one was correct
  • One drop target, based on my answer to the other question, it accepted all drag sources but only one by one. When dragging another source it would replace the first one.
  • Infinite Attempts

Drag&Drop confusions

Drag&Drop slide have some limitations such as: all drag sources and drop targets have to be on the slide from the first frame.  You can define it as a score slide or as a KC slide (see Drag&Drop Tips).  It has a lot of the behavior of a quiz slide, but it is not a full-blown quiz slide or KC side. Here are some points in its UI that I find really confusing and would love to see changed (logged feature requests about that since version 6):

  1. D&D slides are automatically pausing at 1.5secs but that is NOT visible on the Timeline, only in the Timing properties, whereas for quiz slides the pausing point is visible on the Timeline but NOT in the Timing Properties. This is confusing.
  2. D&D slides have an On Enter event and an On Exit event, whereas quiz slides only have an On Enter event. That is OK.
  3. Submit button both for D&D slides and for Quiz slides have one or two events, depending on the number of allowed attempts. For quiz slides, the actions triggered by those events will happen after the first step of the Submit process (where feedback messages appear), for D&D slides there is only one step in Submit process. That is OK, you just have to realize that.
  4. I talked about one or two events:
    1. If the number of attempts is limited you have two events: you allwasy have the Success event. That event and its linked action occur when the answer is validated and correct. That is fine, works the same for quiz and D&D slides. If you want to give the learner the time to read a Success message, which can appear automatically you have to leave some time to the learner by choosing the correct action On Success. Example: if you set the Success action to 'Go to Next Slide', learner will not be able to see a Success message. Change to 'Continue', and eventually increase the duration of the slide. Works fine, just that slight difference.
    2. If the number of attempts is limited, the second event is the Last Attempt event. That is indeed the indication in the Actions part of  the Quiz Properties.  The Failure message will always pop up with every Failure attempt, but the event that triggers an action only occurs when all attempts are exhausted. However in the Actions tab of a D&D slide it is wrongly labeled as Failure event. Many users  believe that the specified Failure action will occur for each Failure attempt which is NOT the case. This is confusing 
    3. If the number of attempts is unlimited you have only one event, the Success event. It is logical because you are supposed to try until you get the correct answer. For quiz/KC slides this is very clear because the Last Attempt event is dimmed when you choose for unlimited attempts. However for D&D slides the (alreadly wrongly labeled) Failure event is not dimmed, although it will never happend. This is very confusing IMO.

Sorry for this long explanation, needed to understand the workflow I explored to answer the question mentioned in the intro. I hope some of you, readers, will support my feature requests to 'repair' the UI and avoid confusion.

Workflow for  messages

User wanted to see a different message popping up:

  1. When the submit button is clicked but no drag action has been done
  2. When the submit button is clicked and the drag action was wrong

Both situations are considered Failures, but Failure doesn't generate an event until the last attempt. Since it is set to Unlimited Attempts, there will never be a Failure event. No way to replace the messages by custom text containers, if you cannot trigger advanced/shared  action on Failure.

The popup messages (Success, Failure) cannot be controlled, they don't have an ID.  You can create states for such a message, but since you cannot address the message, you cannot change the state by an action.

A possible solution is to replace the text in the Failure message by a variable, in this case I labeled it v_failure. It is possible to change the value of a variable. This is the screenshot in editing phaes of an example slide:

As default value on defining the variable I used the text to show when the learner has clicked the Submit button without doing any drag action:

The value of the variable has to change when at least one drag action has happened, which was not the correct action. Besides the events occurring after clicking the Submit button, D&D slides have also Object Actions. I will use those actions to assign another value to the variable v_failure. Open the dialog box in the Format tab for the selected drop target. In this very simple example, I used an Assign command as you see in this screenshot. I only needed it for the two wrong drag sources. For the correct source, no need to change the Failure message, since the Success message will appear. Since I used a simple action, needed to uncheck the box 'Continue Playing the Project'.

If you need to change a lot of those actions, and it is OK to have always the same Failure message, please create an advanced (oneline) action, will save you time when applying in the Object Actions. If you want a different feedback message for each wrong source, use either the Assign command (as above) or use a shared action.

 

 

 

 

 

]]>
ir. Lieve Weymeis
tag:blog.lilybiri.com,2013:Post/1286414 2018-05-27T16:54:15Z 2018-05-27T16:54:15Z Advanced to Shared Action: Step-By-Step (micro-navigation showcase)

Intro 

After the introduction to Micro-Navigation I explained how to use it for forcing the first view of a slide, and for playing an audio file on first visit. When looking at the resulting advanced actions they are pretty similar in both posts. Moreover you probably will want to use the action on multiple slides in the course, and maybe also in future courses. That sounds like a perfect scenario for conversion of the action to a Shared action. I have been blogging already several times about Shared actions. In the present article I try to explain how to reflect on the use of parameters. Static objects need to be parameters as are states and groups, I label them as 'compulsory'. But Variables and Literals are 'candidate parameters', a well-founded choice for change them in parameters,  can save you lot of time later on. Consider it a good practice example.

Analysis

When comparing the two advanced actions created in the mentioned articles, there is a small difference: the first decision (which is a standard action) has one command extra in the second advanced action (for Audio). For the ForceAct, the number of seconds to be jumped over is directly entered in the Expression command, for the SkipSlideAudio, Assign is used to store the number of seconds in the user variable v_skip. Both versions work well, but personally for a shared action I prefer the one with the extra Assign command.

What are the parameters for the shared action?

For the first decision (labeled Always in both advanced actions):

  •  'Assign v_skip with 16.5': this first command has two candidate parameters, the variable v_skip and the literal 16.5. The variable can be reused on each slide where the action is needed. Both advanced actions used the same variable in the interactive movie. There is no need to promote that variable to a parameter in that case. However the literal '16.5'  is the number of seconds to be jumped, will have a unique value on each slide, it has to be promoted to a parameter. Parameter 1 = literal. You have to be careful with literals: double-check that the same numerical value is not used anywhere else in the action. In this example there is a second literal '1' in the second decision, Increment command. It has to be different from the first parameter, which is the case.

  • 'Expression v_skip = v_skip * cpInfoFPS': the user variable v_skip is no parameter (see above). The system variable cpInfoFPS has never to be replaced by another variable, will be no parameter neither.

  • 'Increment v_visit by 1': the user variable v_visit has to be unique for each slide, as you can see in the action SkipSlideAufio where another variable has been used. This means that we have to promote that variable to a parameter, parameter 2. The literal '1' however will always be the same, no need to turn it into a parameter. We already double-checked that the literal in the first decision was different from 1.

The second decision is conditional:

  • 'IF v_visit is greater than 1': has two candidate parameters as well. We already indicated that v_visit is a parameter. The literal in this case will always be 1, will never be changed and need not to be a parameter.

  • 'Expression cpCmndGotoFrameAnd Resume = cpInfoCurrentFrame + v_skip': has 3 candidate parameters. Above was already decided that v_skip can be reused on each slide, and the system variables will always be the same.

Shared action Skip_Frames

When you choose to save any of the advanced actions used to skip frames as a Shared Action you'll see that all possible parameters are marked as OK. The reason is that there is no compulsory parameter in this action:

As a result of the analysis above, we need to mark to items as parameters: the tracking variable and the number of seconds to be jumped on later visits. The result will look like this. It is important to give a good description not only for the shared action but also for the marked parameters:

You can assign the shared action to all the slides where you want to jump frames on a later visit. You only have to define a tracking variable and estimate the number of seconds to be jumped. Here is one example setup for the slide where audio had to be jumped on later visits:

You can check in the Library for the Usage of the Shared action, much easier than for advanced actions.

Using Skip_Frames in future projects

Want to reuse this action in other projects? The workflow is described in an older blog post. Short summary:

  1. Use File, Import, External Library and point to the project where you created the shared action.
  2. Library will be opened in a floating panel. Look for 'Skip_Frames' in the Shared Actions subfolder and drag it to the Library of the new project.
  3. Because v_skip is not a parameter in the shared action, it will be created automatically, including the description.
  4. You have to create a tracking variable for each slide to which you want to assign the shared action, and define the duration in seconds to be skipped. Ready!








]]>
ir. Lieve Weymeis
tag:blog.lilybiri.com,2013:Post/1284021 2018-05-21T10:23:29Z 2018-05-21T10:23:30Z Play Audio once on First Visit

Intro

In a previous post I explained the possible workflows to force the learner to view a slide completely before the Next button appears, but only on first visit. This new use case is similar but for another goal. Most courses will have narration explaining how to use the functionality of the course: how to navigate, how to use the TOC, how to pop up extra information, how to use a dashboard/dynamic menu etc.  When the learner is free to come back to those slides, it can be annoying if she/he has to listen to the audio again. To avoid this I will explain two possible workflows:

  1. Using the On Enter event to trigger an advanced action, which will use the Play Audio command based on checking which visit it is to the slide. It is an easy workflow, with one drawback: for the Play Audio command it is not possible to use the Closed Captioning feature packed with Captivate.
     
  2. Since Closed Captioning is only possible with Slide audio, this alternative workflow will use micro-navigation to jump to a frame after the end of the audio timeline. If you didn't read my introduction to Micro-navigation, please use this link

Both workflows can be watched in this interactive movie. Be sure to check out later visits by using the Back button. As explained in the previous post, we'll need a tracking user variable. It starts with a default value of 0 and is incremented with each visit to the slide. 

Workflow 1: Play Audio

For each slide where you want to use this action, you'll need a tracking variable. For the slide in the movie where this action was used, the variable was labeled v_visit_PlayAudio. Look at the Preview of the action, which is triggered by the On Enter event of the slide:

It has two decisions:

  • TrackVar is not conditional, will increment the tracking variable (which started at 0).
  • CheckVisit checks the value of v_visit_playaudio. If the value is greater than 1, which means it is not the first visit, nothing will happen (Continue), if it is not greater than 1, which means the first visit, the audio clip will be played.

Workflow 2: Skip frames

Look at the timeline of the slide with the Touareg salt caravan (Ténéré desert):

The Next button appears at 16,5secs. If the visit is not the first, all frames in 16,5secs have to be skipped. We need a tracking variable, which will be labeled v_visit_SlideAudio. It is not possible to reuse the variable which tracked the visits to the previous slide where workflow 1 (Play Audio) was used. I suppose  free navigation is possible, hence tracking visits will need a variable for each slide where you want to use the workflow. However, the variable v_skip, which is used to store the number of frames to be skipped, can be reused for each slide where you want to use this second workflow. It doesn't matter if you want to skip part of the slide to avoid an audio clip to be played the second time, or to avoid that animatios are playing the second time. As you see in this screenshot, the advanced action looks very similar to the one in the first post 'Force first view'.

It is so similar that it was possible to create this action as a duplicate from the one in the post 'First View'. If you are not familiar with duplicating an action, have a look at  Advanced Actions Dialog Box

Afterthoughts

Such a situation with two (or maybe more) similar actions,  immediately triggers this question for me: can I make this easier, can I save time if using this action multiple times. Two possibilities:

  1. Change the advanced action so that the same action can be applied to both situations? There are two differences in the situations: the literal which is the duration in seconds to be skipped (was 10sec in the first post, 16,5sec in this timeline) Second difference is the tracking variable. For the literal a solution could be found, but that is not the case for the tracking variables because they have to be unique for each slide. This approach is not possible for the present situation.

  2. Convert the advanced action to a shared action, with as little parameters as possible. That would also make it much easier to transfer the action to future projects, and as you learned from my webinar (see summary in this interactive movie) due to the presence o the shared action in the Library, much easier to manage. How to do the conversion and use the shared action, will be the topic of my last post in this sequence.






]]>
ir. Lieve Weymeis
tag:blog.lilybiri.com,2013:Post/1283171 2018-05-17T09:17:32Z 2018-12-19T16:06:39Z Force First View (micro-navigation)

Intro

This question appears often: how can I force the user to view the slide completely before the Next button appears; but when revisiting the slide the Next button should appear immediately. From a pedagogical point of view, I don't think this will improve the efficiency of the learning, but that is off topic. 

Watch this movie: forcing view is used on the slide with the animated dices. The workflows for the audio slides will be explained in a future blog post.



I will explain my analysis and how to create the needed variables and advanced action.

Analysis

Look at the timeline of the animated dices slide from the movie.

This particular slide is just an example. You see that the Next button (a shape button) appears after the last animation has finished, the learner is forced to watch everything that happens on this slide before the Next button becomes available and learner can proceed. We don't want to put him/her throught the same ordeal when revisiting the slide. Here are three possible workflows:

  1. Create two Next buttons: the one at the end (visible at first visit) and another hidden button, with a timeline that starts from the start of the slide. That second button has to be made visible on second and later visits, whereas the first button will be hidden. Advantage: learner can watch the animations if he wants to, but also skip them by clicking the Next button.
    Problem: this will not be possible in responsive projects with Fluid boxes if you want the two buttons in exactly the same location. Even though they are not timed to appear at the same time, a normal fluid box doesn't allow this.

  2. One Next button, timed from the start of the slide, to be shown/hidden. Use the On Enter event to check tf it is a first visit. If that is the case, hide the Next button, use the command 'Delay Next Actions by....' and enter the time that you want to keep the Next button invisible, then Show the Next button. This looks a good workflow but you have to avoid to offer the possibility to the learner to pause the slide. The Delay command takes not into account any pausing. If  you cannot figure out how to script this solution, send me a note.

  3. Use what you learned about Micro-navigation:  except for the first slide visit, jump directly to the start frame of the Next button's timeline. That means that everything will be in place, animations are finished in this case. Check to have all objects timed for the rest of the slide (CTRL-E).  Since there is no stacking in this workflow, this workflow is also functional for responsive projects developed with Fluid Boxes. Focus of this article  is on this last workflow. Check the Timeline screenshot: the jump should be equivalent with 10secs , start of the Next Button timeline.

All workflows need to track if the learner visits the slide for the first time or not. That can be done by a user variable. We could use a Boolean, or a variable that is incremented with each visit. It is the increment approach that will be used here.

Advanced Action + Variables

The variable that will track the visits got the name v_visit, and a default value of 0. It will be incremented by 1 on each visit. Eventually you can show the number of visits by inserting that variable in a text container:

We have to jump 10secs ahead, which has to be converted to frames.You can use the system variable cpInfoFPS. We'll use another variable v_skip to store the number of frames (that variable could be reused on several slides):

v_skip = cpInfoFPS * 10

The advanced action will have two decisions, as you can see in this Preview:

In the first decision 'Always' which is not conditional, the number of frames is calculated and the tracking variable v_visit is incremented. The second decision 'JumpFrames' is conditional: if it is not the first visit, the playhead will jump as many frames ahead as calculated in v_skip. Since this action is triggered On Enter of the slide, the system variable cpInfoCurrentFrame corresponds with the first frame of the slide.

Afterthoughts

How will you manage if you have a lot of slides that need to get this 'Forced view' action?  What can be reused? Will you duplicate and edit the actions? What has to be edited? Try to find an answer to those questions. Look out for my reflections in two future posts: next one will show that a similar advanced action can be used for another use case, and in a third post I'll explain why this perfect to be converted to a Shared action, how to convert the present advanced to a Shared action to make it as flexible as possible.




]]>
ir. Lieve Weymeis
tag:blog.lilybiri.com,2013:Post/1282486 2018-05-11T16:13:11Z 2018-05-11T16:19:51Z Micro-navigation (introduction)

Intro

Recently I presented two sessions about the Timeline at the Adobe eLearning Conference in DC (25th of April 2018). Maybe you did read a previous post, where I offered some easy Timeline Tweaks, taken from the first presentation 'Demystifying Captivate's Timeline' which was aimed at clarifying basic features of the timeline, including the different ways of pausing the timeline. The second presentation 'Mastering Captivate's Timeline' plunged deeper into exploring advanced workflows, including use of variables, advanced/shared actions and.... micro-navigation. I created that term in this (old) article. The word has been adopted by many Captivate users. Time to upgrade this article to integrate the changes within newer versions (system variable names) and the switch from SWF to HTML output. If you have a look at that article, please use a Flash Player enabled browser to watch the embedded interactive movie (SWF).  The present post can be considered as an introduction to 'micro-navigation'. We will start with a comparison between navigation between Slides (macro-navigation) and navigation between Frames.

Navigation

Between Slides

You, Captivate user,  are aware of slides and master slides. Slides appear in the Filmstrip and each slide is based on a master slide Master slides have a dedicated panel, which looks very similar to the Filmstrip. In the Newbie UI when activating the Master Slide panel it will replace the Filmstrip in the left docking station. The Timeline panel can be used both for slides and master slides. Timing (horizontal scale) itself has no real meaning for master slides,  panel is used to change the stack order (or z-order) of objects. If you insert a shape button having a pausing point on a master slide,  pause will be visible at the end of the timeline. 
For sure you have used navigation commands for slides. In the dropdown list of the Actions tab for any event (slide event, interactive object event) or hyperlink navigation commands are available. They allow you to override the default navigation. 'Default navigation' means when the playhead reaches the end of a slide it will automatically move to the next slide.
The slide navigation commands are:
  • Go to the next slide

  • Go to the previous slide

  • Jump to slide ...

  • Go to last slide visited

Maybe you are not aware of the availability of dedicated Shape buttons in the Shape thumbnail dialog box, that have an advanced action to go to the Last slide or the First slide of a project?
Also less known are the system variables from the category 'Movie Control'  related to slide navigation. They be used in actions:
  • cpCmndGotoSlide  can be used to replace the simple command 'Jump to Slide'; beware: index starts with 0, whereas the index of cpInfoCurrentSlide starts with 1 (exceptional to make it possible to use in a progress indicator). If you want to restart a slide without re-entering the slide, you can use "Expression cpCmndGotoSlide = cpInfoCurrentSlide - 1"  

  • cpCmndNextSlide  is a Boolean variable with a default value of 0. With 'Assign cpCmndNextSlide with 1" has the same result as Go to the next slide     
  • cpCmndPrevious is a Boolean variable with a default value of 0. With 'Assign cpCmndPrevious with 1" has the same result as Go to the previous slide

Between Frames

A published cptx-file (to HTML or SWF) is an interactive movie. Each movie '(and animation' plays at a certain speed, the 'professional' name for that speed is 'Frames per Second' rate, or FPS. The quality of a movie depends on the resolution but also on that FPS number. The default FPS for a published cptx-file is 30FPS. You can see this rate in the Project Info panel.
 

It is possible to change FPS rate in Preferences, Project Publish settings.

 
With the default rate (30), each second on the timeline has 30 frames, the smallest unit on the timeline  (0,1sec) 3 frames.  I use the word micro-navigation for navigation between frames. Contrary to the navigation to slides, there are no commands available for micro-navigation. It is only possible using advanced or shared actions which allow you to manipulate the system variables available for frames. The relevant frame system variables are:
    
From the category 'Movie Information'
  • cpInfoCurrentFrame: your best friend when exploring Captivate's timeline, debugging projects with advanced actions, micro-navigation etc. You'll find that variable inserted in a text container quite often in my tutorials. You can watch an example in this interactive movie   
              
  • cpInfoFPS: returns the FPS rate, by default set to 30 as explained above. This variable can be used in calculations (with Expression) to convert from seconds to frames.

  • cpInfoFrameCount: similar to cpInfoSlideCount (total number of slides in project) it returns the total number of frames in the project. It can be used in combination with the previous variales to calculate to the total duration of the project (as shown in the TOC).
    From the category 'Movie Control'
  • cpCmndGotoFrame can be used to jump to a frame using its frame number (similar to cpCmndGotoSlide); playhead will not be released, project remains paused.
  • cpCmndGotoFrameAndResume can be used to jump to a frame using its frame number and to release the playhead at the same time, project will continue.

Testing? 

It is just a proposal: test out what you learned by creating a one-slide project, similar to the one visible at the start of this post and as thumbnail.  Design is up to you, but this is required for the 'exercise':

  1. Replace 'No action' for the On Enter event of the slide by 'Pause'; the slide shouldn't start playing automatically.
  2. Insert the system variable cpInfoCurrentFrame in a text container (example has it bottom right); that will allow you to track the location of the playhead. When starting the slide it will pause immediately, it will show 1 (although the system variable starts with 0, there is a small delay).
  3. You need two buttons: one for navigation forward, and one for navigation backwards. I used two shape buttons from the category Buttons, but replaced the action (see below). In the example they are at bottom center.
  4. A number of objects staggered on the timeline. In the example I have 7 shapes aligned in a row. They appear 1 second later than the previous one. All objects are timed for the Rest of the Slide. Result will be that the slide itself will have a duration that is longer (8secs in my case). To move an object on the timeline one second to the right: select the timeline of that object and use shortcut key CTRL-right (see Colors and Keys for Timeline). Here is a screenshot of the Timeline in my example:

    You see a small gap (0,1 sec) before the first object. Reason is the delay I mentioned before: playhead is stopped at frame 1, I don' want that shape to appear immediately. Because this is a one slide project, I didn't need to pause the slide at all, not even at the end. Both buttons have no pausing point as you can see in the Timeline.

Three events are used on this slide for actions:

  1. I already mentioned the On Enter event of the slide, which is set to 'Pause'.
  2. The button SB_Next triggers a one-line advanced action that should look like this:
  3. The button SB_Back triggers a one-line advanced action that should look like this:

Test now, either after publishing and uploading to a webserver, or with Preview HTML in Browser! 
Everything is working as exptected? Great, you are ready for more advanced workflows with micronavigation. Watch out for the next article about micro-navigation: a shared action that can be used in different situations: forcing full view of a slide on first visit, but not on later visits is one of the use cases.


]]>
ir. Lieve Weymeis
tag:blog.lilybiri.com,2013:Post/1281265 2018-05-08T08:44:55Z 2018-05-08T08:44:56Z Where is Null in CP2017?

Intro

One of my most visited blog posts published 7 years ago (Captivate 5, 5.5)  is Where is Null?

Beware: the embedded movie is a SWF, you need a browser with enabled Flash Player to watch that movie. Everything worked fine for SWF output also in later versions. However it is now partially broken for HTML output in CP9 and CP2017. Several users contacted me to ask for a solution, hence the reason for this new post.

Use Case

The use case can be split up in two phases:

  1. Checking the entry in the Text Entry Boxes): user has to enter something, but it is not to be validated, cannot be empty. Because the way Captivate is treating the value of variables, you need to create an empty variable, which I use to label 'v_null'. If the TEB field(s) is (are) empty, a warning should appear for the user.
    That part described in the old blog post is still valid!  For that reason I will restrict the explanation in this post to one TEB on the slide.
  2. Reactivating the Text Entry Boxes) to allow a new attempt for the learner. Once the Submit button is clicked the TEB is deactivated by default. It is this second part that is no longer functional in recent versions for HTML output.  Focus will be on this second part.

Example Movie

You can watch the example movie by clicking this link

CheckTEB

Workarounds for Reactivating TEB

I propose two workarounds: the first workaround uses the dummy slide as described for another use case in a recent post as Tip 2 (Reset Slide). Since you will re-enter the slide, you can use the On Enter event to restore the initial settings. The second workaround uses micronavigation, which was also used in the original setup. But in this case micronavigation will be not be used to move the playhead before the pausing point of the TEB, but to re-enter the slide.

Solution 1: Using Dummy slide

In the movie this solution is on slide 3, the dummy slide (duration 0,1sec) is slide 2. You see the slide numbers at the bottom in the movie. That is the biggest drawback of this solution, you will have extra slide(s). Three events are used on slide 3:

  • On Enter event triggers the advanced action EnterEmpty which resets the situation when re-entering the slide: clears the TEB associated variable v_MyName, hides a Group Gr_Retry (message + button) which will be shown when the TEB is empty and hides another group Gr_OK (message + Next button) which will be made visible when the TEB has an entry.

  • Success event of the TEB triggers the shared action Check_TEB which is also used in the second workflow. It has 3 parameters: the variable associated with the TEB, what (group or object) has to be shown when the TEB is empty, and what (group or object) has to be shown when the TEB variable has a value. In this case the two last parameters are groups: Gr_Retry and Gr_OK.
  • Success event of the Retry button has the simple action 'Go to Previous Slide'.

Solution 2: Using micronavigation

You see this solution on slide 4. This solution needs one more user variable v_start to store the first frame number of the slide, using the On Enter event of the slide. The Retry button will use this number in combination with the system variable cpCmndGotoFrameAndResume to navigate the playhead to one of the last frames in the previous slide. This will avoid the creation of extra slides as with the first solution But the workflow is a little bit more complicated.  The used events and actions are now:

  • On Enter event triggers the advanced action EnterEmptyBis which resets the situation when re-entering the slide: clears the TEB associated variable v_myName, hides a Group Gr_RetryBis (message + button) which will be shown when the TEB is empty and hides a message  Tx_Welcome_20 (kept the generic name) which will be made visible when the TEB has an entry. It also defines the value of v_start with the current frame number, which will be the first frame of the slide. 

  • Success event of the TEB triggers the shared action Check_TEB  used in the first workflow. It has 3 parameters: the variable associated with the TEB, what (group or object) has to be shown when the TEB is empty, and what (group or object) has to be shown when the TEB variable has a value. In this case third parameter is not a group but the message Tx_Welcome_20.

  • Success event of the Retry button triggers an advanced action RetryAct with two commands: clears the variable v_myName, and calculates the frame number that is 2 frames less than the start frame of the slide. I prefer 2 instead of 1 frame because there could be a small delay which makes v_start equal to the second frame number of the slide.

Roundup

Drawback of both proposed workarounds, compared with the original solution (broken now) is possible flickering when the slide is re-entered. I have tried a lot of ideas to avoid that flickering which is an annoying issue since many versions (if my memory is correct since version 6): transitions (not slide transition which is unsupported for HTML output), Delay command, delay on timeline etc.. 

Drawback of the first workaround is that the total number of slides (cpInfoSlideCount) and the current slide number (cpInfoCurrentSlide) cannot be used directly to indicate slide progress due to the inserted dummy slides.

For the second workaround: if you want to apply this to multiple slides, it is possible to reuse the variable v_start which stores the first frame of each slide. If you use the shared action, the variable v_null is not defined as parameter. That means it will be automatically created when import or drag this action to the Library of a new project. As you probably know I am a big fan of shared actions. Maybe I will post some of my tricks to save time with shared actions. in a future post.





]]>
ir. Lieve Weymeis
tag:blog.lilybiri.com,2013:Post/1278808 2018-04-30T19:15:00Z 2018-04-30T19:15:00Z Easy Timeline Tweaks

Intro

Last week at the Adobe eLearning Conference in DC I presented two sessions about the Timeline. The first part 'Demystifying Captvate's Timeline' allowed me to explain the basics without having to rush as was the case in the Adobe Learning Summit at Las Vegas 2017 (watch the interactive version of that presentation in: Captivate's Timeline). The second part 'Mastering TImeline' had its focus on more advanced workflows, using micronavigation, advanced/shared actions and multistate objects. In the first part I didn't use any advanced nor shared action, just offered some small practical tips. For those who couldn't participate in the conference I will summarize those tips.In this article you'll find 3 tweaks.

Tip 1: Pausing all slides at the end

This request often appears in the forum, and is also useful when using Captivate for presentations  (as I usually do). The user has to take an action to continue to the next slide. Two possible situations: you are using a default playbar, or custom navigation. Both workflows are using a shape button on master slides. Shape buttons are the only interactive objects allowed on master slides. You can use them in non-responsive and responsive projects (both Fluid boxes and Breakpoint views).

With Default Playbar

  • Open the Master slide panel
  • Select the Main Master slide
  • Add a shape button, with Alpha = 0 for the Fill and width = 0 for the stroke to make it invisible to the user
  • Check the settings for that shape button in the Actions tab of its Properties panel, to look like this screenshot:

    No action is needed for this shape button, its unique use is to Pause the slide. Each shape button set up this way will pause slides using this master slide at the end of the slide, whatever its duration.
  • Check if the daughter master slides have the option 'Show Main Master Slide Objects' checked. With the included themes, that is the case for most master slides, with the exception of the Title and the Blank master slide.

With Custom Navigation

If you use master slides with an inserted Back and/or Next shape button for custom navigation, you can use that shape button with the same settings as described under the previous workflow. Those buttons will have a Fill and perhaps also a stroke, and they may not be on the main master slide but on other master slides. You just have to check that each master slide has at least one shape button to pause the slide.

Tip 2: Reset a slide

This tweak can be used in several situations:

  • to reset a knowledge check slide
  • to reset a Drag&Drop slide configured as knowledge check slide
  • to reset effects, including motion effects
  • .....

In the second presentation I explained an advanced workflow using micronavigation, but this workflow is easier, though it will increase the number of slides, which means that you cannot use the system variables cpInfoCurrentSlide and cpInfoSlideCount to show the progess of the slides. Try this out:

  1. Insert a short dummy slide before the slide that you want to reset. Give it a timing of 0,1sec (shortest possible).
  2. On the slide to reset, insert a (shape) button which you can style as you wish.
  3. The success action of that button should be: Go to Previous Slide'. When you click that button, the playhead moves to the previous slide which is so short that it is practically invisible. Since the content slide is re-entered it will automatically be reset for the situations mentioned above.

This workflow is also valid for all types of cptx-projects, responsive or not.

Tip 3: Avoiding frustration in Quiz

Quiz and score slides have a default pausing point at 1.5secs. That pausing point is visible on the Timeline, but is not present in the Timing Properties panel. Here is a short description of the 'role' of this pausing point:

  1. On Quiz slides it is linked with the two-step Submit process (and Submit button). In the first step the playhead remains paused while the learner sees the feedback messages. In the second step, the playhead is released. If you keep the default Success/Last Attempt actions set to Continue, the playhead has to visit all the frames in the inactive part of the quiz slide (part after the pausing point) before reaching the next slide. You could change those actions to 'Go to Next slide', but sometimes (depending on the setup for transmitting the score, bandwidth etc) this could lead to problems.

  2. On the Score slide the pausing point is linked with the Continue button. Contrary to the Submit pausing, the actions triggered by that button which you specify in the Quiz Preferences (If passing/failing grade) are only done when the playhead reaches the last frame of the score slide.

In both cases you can avoid frustrations by dragging the pausing point closer to the end of the slide timeline, but not completely till the end (leave a small inactive part). 

Moving the pausing point is even more required when you have slide audio on the question or score slide. In almost all cases, that slide audio will result in a longer slide duration than the default 3 seconds.  You have to know that it is not possible to pause slide audio on a quiz/score slide by a pausing point, as is possible on other slides when using an interactive object. You may not be aware of the pause at all, audio will just continue. Many users are confused by that.  If you leave the pausing point at 1,5secs, the learner will have to wait a frustrating long time when completing the Submit process (quiz slide) or leaving the score slide with the Continue button. Make sure to drag the pausing point in such a situation:

Tip 4: Forcing views

As a professor with a lot of experience in tutorials for adult learners, I really dislike this request that appears too often on the forums: how can we force a learner to 'view' all the content on a slide. Forcing viewing doesn't mean understanding, nor learning at all, can even have the opposite effect. But that is off topic.

You have to forget the default playbar in this situation. Each slide will need a Next button. The timeline of that button has to start after all content has appeared and all audio has been listened to. Timelne will look similar to this screenshot:

Such a setup will become very annoying if you allow the user to revist the slide: he will have to wait again until all audio has played and all content has appeared to be able to proceed. Is there a solution? Sure, but not without advanced/shared actions. Watch out for a next blog post, linked with the second part of the Timeline presentation. I will offer you a shared action that makes it very easy to avoid that boring situation on second and later visits. 



]]>
ir. Lieve Weymeis
tag:blog.lilybiri.com,2013:Post/1271573 2018-04-11T21:31:25Z 2018-04-12T14:47:41Z 3 Audio Tricks

Intro

Last week I answered several questions about audio on the forums with pretty simple workflows Maybe you will like them? Contrary to what you are used to read in my blog, this is a short article, there is no example movie.

Trick 1: Audio when hovering over a (shape) button

Buttons and shape buttons have 4 InBuilt states: Normal, Rollover, Down and Visited (only available in CP2017).

Quite a while ago I explained what I mean by an 'Audio Object'. It is a shape or a highlight box, which you make invisible to the user by changing the stroke width to 0 and set the Alpha for the Fill to 0 as well, but attach audio to that object. If you want to learn more about them have a look at this post.

This screenshot illustrates the workflow. The audio (Cymbals) will only play when hovering over the button.

Trick 2: avoiding overlapping audio on quiz slide

A problem occurs on quiz slides with following setup:

  • Slide audio plays explaining the question
  • Object audio is attached to the Feedback messages

Problem is that when a learner submits the answer(s) before the slide audio ends, there will be overlapping of the slide audio with the audio of the message that pops up. It is not possible to control the appearance of the Submit button, since it is an embedded object, has no individual timeline. Submit button in all Captivate themes is of the type 'Transparent button'. This was my workaround, and the user confirmed it was working perfectly:

  • Create an image that is similar to the Submit button. That is perfectly possible with a shape: same fill, same stroke, same font, font size and font color as the quiz buttons.
  • Take out the label 'Submit' from the original Submit button, set the stroke width to 0, alpha for the Fill to 0 so that it becomes invisible. It will still be active.
  • Put the image in the same location as the invisible Submit button (use Align menu).
  • Change the start of the timeline of the image, so that it begins just at the end of the slide audio.
  • Move the pausing point of the quiz slide to be after the end of the slide audio. Only way to do that is by mouse dragging. That pausing point is not in the Timing panel.

Why is this working? Because the Submit button is an embedded object, it is always on top of added custom objects (the image). That means it is active! Only when the learner would click by accident on the 'invisible' active button, the problem will occur. But in most circumstances the learner will not be aware of that possibility and will wait patiently until the audio finishes and the 'Submit' indicator appears.

Trick 3: Audio in states

Just want to refresh your memory: it is possible to attach audio to states. When you change a state, the audio of the previous state is automatically stopped. A feature that you can use in many ways as I illustrated in these movies:

Automatic Lists

Drag&Drop Object Actions

You can even create a shape with states that are invisible but have all audio clips. Let your creative mind wander....


]]>
ir. Lieve Weymeis
tag:blog.lilybiri.com,2013:Post/1266188 2018-03-28T16:39:59Z 2018-11-15T12:59:44Z Poster Image - AutoPlay
For CP2019 users:  the last hack to get rid of the rectangle surrounding the play icon is no longer necessary. It is removed in this version.

Intro

This short blog post is meant to help solving an issue that pops up in the forums once in a while: "How to get rid of the white screen and Play button on mobile devices?". When publishing to HTML the AutoPlay is automatically disabled,  Reason is that some devices and OS (iOS) do not allow Autoplay. For SWF output you had the choice: it was possible to change the default setting which was to have a movie playing automatically after loading. I often disabled that option when embedding SWF's on my blog (look at older articles), especially when audio was involved because it is not very polite to have audio being pushed to the reader automatically. 

Consequence of the AutoPlay being disabled without your control as developer, is the appearance of a big white screen with a small play button right in the middle. The button looks like this (but originally one is smaller, 96x96), black arrow in black circle with transparent background:

Such a button will not always blend well in the design of your project.

Poster image

To get rid of the white screen, you need to create a "poster image"? That is a static image, preferably with the same resolution as your project. For a non-responsive project, published with Rescalable turned on, the poster image will fill up the screen. All embedded HTML movies in my blog were using this type. 

Mostly I duplicate a slide from the project to create such a poster image, Duplicate because it may need some editing, especially if you also want to have a better looking Play arrow. I will take a screenshot of that slide while it is playing to save as a PNG (or other image format) and then hide the slide to avoid it to be included in output. 

When the image is ready, set up the Preferences, Project, Start and End: turn off AutoPlay and indicate the poster image.

Play Arrow

My personal hack to have a play arrow that is fitting with the design of each project is this workflow:

  • I created a copy of the original image  C:\Program Files\Adobe\Adobe Captivate 2017 x64\HTML\assets\htmlimages\PlayI_icon.png and edited to turn it into a full transparent image 
  • I renamed the original image and put the empty image in the same path.
  • On the poster image I created an arrow, mostly I use a triangular shape, rotated 90°, using colors from the project Theme Colors palette. You will have seen them in previous blog posts.
  • That Arrow has to be centered horizontally and vertically. 

Dimmed or not Dimmed?

The uploaded published HTML project will by default have a dimmed Poster image (Alpha = 70%). It was meant to have the original Play icon stand out from the background. But that black play icon is gone:

A helpful user on the forum posted the solution: Mark Sabrento  Thanks a lot, Mark (screenname sabre123). I tried it out and it works great. You find it in this  thread

Look for the file CPM.js, which you'll find in the published folder under \assets\js

Open his file in an editor (I use Brackets, but even simple Notepad is possible). Change 0.7 to 1 in this line to set the opacity(alpha)  to 100%

cp.autoplayImage.style.opacity=0.7

Update

An expert posted a solution  in a thread to get rid of the focus rectangle surrounding the play icon. Sorry, but I forgot to bookmark the thread, which means I cannot pay credit to that expert by name, but found it worthwhile to complete this blog post with that solution:
  • Find the file CPLibraryAll.css in the published folder under assetscss.
  • Add these lines before the existing script:
       *:focus {
       outline: 0;
       }
In that same file you could also change the width and height of the original Play icon which is set at 116x116px. 
]]>
ir. Lieve Weymeis
tag:blog.lilybiri.com,2013:Post/1265448 2018-03-26T20:12:57Z 2018-03-26T20:12:57Z Drag&Drop Actions

Intro

In the webinar which I presented on 2018/3/15 about Shared Actions, I showed several workflows with shared actions. If you want to have a look at the presentation used during the webinar, look at my previous blog post. You'll find a link to the published interactive movie

One of those examples, was a Drag&Drop slide where both advanced and shared actions were used as Object Actions. It can help you with the tough task to choose between the two types of actions. A similar example appears in the presentation, where only a shared actions was used. It had 7 drag sources and two drop targets:

Example movie

You can watch this movie to understand the goal of the D&D slide. It has 6 drag sources and only one drop target. You will be asked to drag only the correct new features in CP2017 to the drop target. Only when the answer is correct will you see the Next button. There is a Reset button for the D&D, which is not the default reset (because of the states used on the drop target) but uses an approach which I have explained already multiple times.


Setup D&D slide

Auto Submit Correct Answers is activated, and the Submit button has been dragged to the scratch area. The drop target accepts all drag sources, which will disappear behind the target but the count is limited to 3 (because there are 3 correct answers). Due to the Auto Submit which only will happen for the correct answer, the Next button will only appear when the answer is completely correct (Action 'On Success'). 

The drop target is a multistate object. I didn't add InBuilt states in this case but three custom states, using a gradient edited for each state with 'Edit Gradient'.

On the slide, not overlapping with any object, there is a multistate shape, labeled 'Comments',  acting as feedback container. The normal state is blank and you see the other states in this screenshot:

Advanced Action DD_CorrectAct

I imported the shared action used in the presentation to the project Library and used is as a template for this Advanced action DD_CorrectAct. I added the Play Audio command. First I tried to add the audio to the state 'Correct' of the multistate shape 'Comments', but that proved not to work in this case, probably due to the Drag&Drop limitations. After the duration of the audio clip (4secs) the shape reverts back to the Normal state, which is invisible to the user (Alpha and Stroke set to 0).

Sorry for the generic label on he drop target. You probably know from my previous blog posts that renaming an object used in a D&D interaction, will kill the set up. 

Since this action is used with exactly the same feedback text and same audio clip for 3 drag actions it is much better to use an advanced action in the situation. 

Shared Action DD_IncorrectAct

The previously described Advanced action DD_CorrectAct is used as source to create a shared action. Since there is no state change needed for the drop target, the fifth command can be deleted. Five parameters are needed (due to the fact that audio couldn't be embedded in states). Four of them are compulsory parameters, one candidate was turned into a parameter: the literal for the delay time. That delaty time has to be at least as long as the audio clip to be played.

You just need to apply the advanced action and the shared action to the proper object actions: 

Want more?

Goal of this simple example was to show when to use a shared action instead of an advanced action? It could have been done with 3 duplicate advanced actions, which is what I see most clients doing. Start to appreciate the advantages of shared actions over duplicate advanced actions:

  • Ease of transfer to other projects
  • Management in the Library
  • Possibiity to use as template

Give it a try. If you want to learn more, give me some feedback, please.






]]>
ir. Lieve Weymeis
tag:blog.lilybiri.com,2013:Post/1256417 2018-03-05T20:48:05Z 2018-03-19T17:04:30Z Webinar Shared Actions!

Update

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

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

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

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


Invitation

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

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

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

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

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


Poster

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

Dare to Share

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

]]>
ir. Lieve Weymeis