The Remediation feature was introduced with Captivate 6. There are many YouTube videos explaining the setup. I still prefer the original one by Shameer Ayyappan.
The idea is that a learner when failing a Question will be navigated back to a content slide. When clicking the Next button on that content slide learner will return to the Question, and be able to change the answer. That is not a normal behavior for quiz slides, by design answers are blocked and attempts considered to be exhausted when leaving such a slide.
There are some issues with the feature:
Quite a while ago I designed a workaround to break the ‘loop’. Yesterday a user in the Adobe forums asked for such a workflow. This is the thread.
As usual I checked if the workflow still is functional on the most recent release (I am on 11.5.5.553) and if it could be improved. You can guess that I replaced the former advanced actions by the much more useful and flexible shared actions.
Watch this example: it has two content slides, and two quiz slides. For the first question (T/F) remediation feature is used, but after a second failed attempt the learner will proceed to the next question. Remediation for the first slide is using the first content slide. Similar for the second quiz slide (MCQ): remediation is using the second content slide, and learner will go to the next slide (score) after the third attempt. Watch it using this link (rescalable) or the embedded fixed resolution version below:
The limitation for the workaround is the same as for the default Remediation feature: you cannot use partial scoring for the MCQ slides, because a partially correct answer is considered to be correct by Captivate.
Sort summary of the default Remediation setup:
To break the eternal loop:
Create two user variables:
Once you have the shared actions in an external library, no need for this first step. Just drag the shared actions (together) from the external library to the project library and they will be created automatically. Since they are in both shared actions, even if you replace the EnterQuest action by an advanced action, it will still be done by importing the second shared action FailureAct.
This (standard) action is triggered by the On Enter event of the quiz slide.
For each quiz slide you’ll need this action to set the value for v_max and to increment the value of v_attempt by 1 to track attempts. This shared action has only 1 parameter: the literal which is the value of v_max for this particular quiz slide. If you want the same number of attempts for all the quiz slides, you can replace this shared action by an advanced action of course.
This (conditional) action is triggered by the Last Attempt event of each quiz slide.
It has one parameter as well: the content slide which needs to be used for remediation.
Similar to the default Remediation, you need a Next button on each content slide with the action ‘Return to Quiz’.
I want to try to keep the tradition to offer a special blog at the start of a new year. Like last year it is a game, hiding my greetings card. There is some nostalgia here as you will read.
On my personal blog you can still find the very first game I every created exclusively with Captivate: no Javascript, no use of widgets nor other applications. That was almost a decade ago. Since that game used Captivate 5 , it took me quite a number of hours to get a satisfactory result. If you still have a browser with Flash Player plugin enabled, you can even watch the embedded game in this post:
http://blog.lilybiri.com/concentration-game-created-exclusively-with-c
With version 11.5, all interactive learning interactions were taken out (lack of use), including the games. You will recognize the former ‘Memory game’ in this game which I offer as an interactive Greetings card for 2021. Last year I also offered a game for the Chinese New Year.
Using version 11.5, this version took me only about 20% of the time I spent in 2011 for the original version. This game uses only one shared action with 3 parameters, one advanced action for reset (and another one to restart the game). It is also much more flexible than the original game. Creating another game with more or less pairs will be a breeze due to the shared action. Finding or creating the images will take lot longer than adding the actions. It is possible to create 'pairs' that are not identical images: for language learning you can pair an image with a word (and maybe even audio), you could pair words in different languages, acronyms with their description etc...
Personally I would have used CpExtra to reduce the statement lines in the Advanced actions, because that wonderful widget allows to Assign, Show, Hide, Disable multiple objects in one statement. However, for the sake of consistency I have created the advanced actions in the default way.
As usual, I provide both a link to a rescalable version, and an embedded one with a fixed resolution.
I want to organize a webinar about this topic:
‘Remodeling Advanced actions to flexible Shared actions‘
This would be for developers with some experience about variables and Advanced actions. If you are interested, please add a comment. From exploring Shared actions I learned to use a different mindset and could offer practical tips. You can even send me an advanced action you estimate to be appropriate to convert to a shared action.
Over 10 years ago I posted a blog 'Create/Use a Knockout Master slide'. At that moment SWF was the only way to publish a Captivate project, and in versions 5 and 5.5 Themes were not ‘grown up’ yet to their present power. Meanwhile I have pointed many users to that old article, and many claimed it was still useful. However time to clarify the slight differences and offer updated tips., Of course I will use a HTML example.
This is a Captivate tutorial explaining how you can use a Shared action to create variables and as template for advanced actions. There are two versions. Here is a screenshot showing the difference in sim slides between version 1 (Full-size) and 2 (Embedded)
Personally I never use a software simulation in Demo mode, because it is better replaced by a Video Demo for its quality and advanced editor. I created a Training simulation, meant to learn about this Captivate topic. The UI of Captivate is rather complicated, hence my choice of a resolution 1600x900px. The ratio is important, here the common 16:9. In the limited space here, I don't want to embed the simulation because that would be almost useless. I published it as a HTML rescalable project. You can watch it using this link:
I used the workflow explained below to create a second version, where the software sim slides are rescaled and embedded in content slides (1280x720px). On those slides there is space for a logo and more. The narration was replaced by text instrutions on the same slide as the software sim. Published project is also rescalable HTML. Even a tablet will probably be impractial in this version. Use this link:
For this example the simulation slides need to be embedded in a project with a resolution of 1280×720 pixels. The captured slides were created with a resolution of 1600x900pixels, which is larger than the final resolution.
To embed the sim slides, they need to be rescaled. If the original simulation slides have the correct resolution ready for embedding, you can skip Step 0.
Rescaling the software simulation to 2/3, which leads to a resolution of 1066x600px. You choose the resolution needed for your project, but keep 'Maintain Aspect Ratio' and 'Rescale all objects'. Those are the default settings.
- calculate the difference between the widths of the vertical bars: 200 – 14 = 186 pixels
- new width project will be 1066 + 186 = 1252 pixels
- calculate the difference between the heights of the horizontal bars: 90 – 30 = 60 pixels
- new height project will be 600+ 60 = 660 pixels
under ‘New Size is Larger’, select ‘Keep project the same size and position project Bottom Right; I choose this because the bottom bar and the right bar have the smallest dimension; you can choose another option if your smallest margins are elsewhere.
In the original blog post it was possible to create a master slide which is partially transparent, but that is no longer possible in the present versions with the Themes (new since Captivate 6). Here is the master slide panel, where you see some master slides of the custom Theme 'Knockout' which I created:
I used the two imported PNGs from the Photoshop file to create:
Up till now the simulation slides used the Blank master slide. Change the master slide to the Knockout Master slide. It is very important that you do NOT check the option 'Master slide objects on top', because you'll lose the textured parts of the image.
Themes, Timelines and Shared actions are amongst my favourite topics, and I needed a long sample project, for this blog about combining two tweaks for Retake Quiz:
In this example project design elements (not interactions) from the Quick Start Project “Wellbeing” have been used. You can watch the embedded version below or use this link to watch a scalable one.
In this post I will only explain the actions for the two Retake Tweaks, not the actions for the multiple Forced view cocntent slides.
This screenshot of the Advanced Interaction panel shows the relevant interactions and events needed to cope with those 3 situations; the relevant actions are marked with a colored highlight box:
There is one special Advanced action, invisible in this panel: On Enter event for the first question slide has an advanced action FirstQuestion. On Enter actions for question slides do not show up in this panel, because the Success column is linked with the Success action of the question slide.
There are several reusable variables (v_1, v_2…. and v_counter) needed for the multiple Forced View content slides, and the system variable (cpInReviewMode) for the custom Review message. For the Retake tweak workflow these variables are used:
There was no possibility to use the variables (v_1, ….v_6) on this slide. Since the action is only used once, it made no sense to use a shared action neither. For situation 2, this Topics slide needs to be reset. Reset is happening with the RetakeAct action (see further).
Only the second decision (RetakeCourse) is relevan for the Retake tweak, first decision is for the custom Review message. That second decision is required for Situation 2. Since the Retake button is used in that situation, by default the learner will be sent to this slide, the first question slide. But in Situation 2 the learner wants to see the full course. For that reason learner is redirected from the first question slide to the Topics slide.
Each decision corresponds with a situation (same sequence as situations).
This action skips the content slides in Situation 3 – ‘Decision SecondNormal’. In that situation the last question will be followed by the first question in the next sequence of questions. The two other decisions - situation 1 and 2 - navigate to the Topics slide.
As explained under Variables, the user variable v_course is tracking whether a normal Retake will be done, or a full course Retake. Of course the button to Retake full course is not needed when the quiz is passed. If the learner failed, the value of v_course is toggled to 1. That stands for a normal Retake (no content slides). The start value was 0, which meant that all slides were viewed the first time. That value will be reset to 0 by the RestartAct.
If the learner fails, Bt_Restart will appear on the score slide. It is a shape button, having the same look (style) as the Quiz buttons. It will trigger this action:
It is a standard action, inviting the learner to click the Restart button. At the same time it will reset the variables for the course situation (v_course) and for the items on the Topics slide, both variables and states. That slide was the only ‘forced’ slide where the ‘Retain State on Slide Revisit’ was checked, hence the need to reset the states.
The state change for the button is to pop up the explanation text, inviting to click the Retake button. As usual I did drag the Review button under the Retake button. Review button will only appear after the Quiz is Passed or all attempts on Quiz level are exhausted.
It would have been possible to restrict the Force View on the content slides to the first view. That workflow is described in these two posts presenting yet another Shared action:
Of course Narration could have been added as well. And that same shared action could also improve the second view of a content slide by skipping that narration with the same micro-navigation.
Collaboration ibecomes easier with good understanding. This blog aims at improving understanding between the Captivate developer and her/his team mate - Photoshop expert. You'll start with typical Photoshop terminology, followedby the two import workflows to import source Photoshop files into . Watching some typical examples can help you to make suggestions to your PS expert.
Goal: make your Captivate use of their creative work more agreeable, and save time.
A layer in Photoshop is always static (not linked to a timeline) but can have multiple objects on a layer (not possible in Captivate cptx files, where each layer is an object timeline as well). They have some added functionality compared with Captivate likes:
Similar to Captivate, a layer can be locked and made invisible. In the screenshot layer ‘Failure3Trans is visible. Layers Failure1 and Failure2 are locked.
The active layer – like in Captivate – is the one you are busy editing. Grouping of layers is also possible. In the screenshot you see two groups of layers and one individual layer at the bottom.
However in the Captivate dialog box for importing a source Photoshop file (see below) the meaning is slightly different. Only the ‘checked’ layers will be imported as one merged image. You will see a typical example in the last section.
A Photoshop document can have a multitude of layers of all kinds. Not all of them are content layers as mentioned before. This can make the decision on which layers to import for a certain goal in Captivate very difficult. For an easier, workflow the Photoshop expert can define ‘layer comps’. See them as a filter: when you choose a comp, some layers will be made visible and checked off, while the other layers remain invisible. Using a comp you’ll import exactly the right layers just by choosing a ‘comp’ name. You will see examples in the third section of this blog. Very useful!
Default way to import graphic assets is by using the Media button on the Big Button Bar. That is possible both for (bitmap) Image and SVG. You will not find an option under that button to import a PSD-file (PSD is the extension of a native Photoshop file). You need to use two possible workflows:
Using this method will import both to the slide and the Project Library. Similar to importing images with Media button, on the stage it will be centered automatically both vertically and horizontally. In the Library you will see a new folder under the root. The folder has the same name as the Photoshop file, and includes what is imported.
In the screenshot you see the Library with 3 imported Photoshop files: FailureSuccess – the file for which the layer panel was shown in the previous screenshot; CompExampleCP which will be shown as example for use of comps; TemplateFlatten which you’ll discover as an example for flattening and non-flattening in the example section.
Using this workflow only export to the library, not to the stage. In the screenshot the Import button is indicated with a red rounded rectangle.
The result for the Library is the same as with the first workflow. New folders will be created. The level below the folders are all PNG images. You can drag those PNG-images to any slide and location.
Which of the two workflows is better, depends on the situation. Have a look at the example section, where I will indicate which workflow may be better for each example. Photoshop files can be designed for multiple purposes to be used in Captivate.
The first screenshot (Terminology, Layersà with the Layers panel of ‘SuccessFailure’ is a typical example of what I mean by ‘Library’. Several images, each on their layer, are in one Photoshop file. In this example they have the same style. The Captivate developer can choose which images she/he likes best for the active project. Some of the images have a version with transparent, and another with white background (multiple background are possible of course).
Another example which I saw several times with clients: Photoshop was used as layout tool, each of the slides were on a layer in Photoshop. That may be considered also as a PSD file of this ‘Library’ type. When you open the Import Dialog box, with one of the two workflows, it will look like the screenshot to the right:
The screenshot shows the Layers panel (Photoshop) of the file ‘TemplateFlatten” which you also could see in the Library screenshot.
This file has 3 image layers which were extracted from 1 bitmap image. Each of them is exactly on the location as in the original bitmap image. I added a ‘template’ layer which can eventually be imported and used to restore the original combined image. But in most cases that will not be necessary.
In this case I recommend Workflow 1, whether you want to import the individual layers as PNGs (Layers in the Import dialog box) or the combined image by checking the option ‘Flattened’.
Reason: when the image are imported to the stage, they will in the correct (relative) location. When you import them only to the Library, you’ll need to use the Template to position the individual PNGs in the correct location.
Look back at the Library panel (Captivate) in the section ‘Import’: the four layers were imported as layers, and in a second process the flattened image was imported as well. That flattened image will be posted automatically in the correct library folder, and gets a generic name (FlatImage1) which you can edit of course.
In the second example I used the same image as here for the comps example. In that example 2, each of the images has a text on the head scarf. The color of the images is gold. I wanted to make this file more flexible in two ways:
That has led to a lot more layers, since text had to be on a separate layer (make it also editable), and to change the hue I used Adjustment layers which are a non-destructive way to change the ‘look’ of the layers below. In the screenshot below you see text layers in two languages (English and Dutch) and 3 adjustment layers on top. To keep it manageable for this blog, I kept only the global image, not the individual ones. Next to the layers panel you see the Layer Comps panel. Each of those comps defines a situation. Presently ‘DutchSepia’ is active and reflected in the Layers panel: the visible layers (eye icon) are needed for this look, with Dutch text on the scarfs and a Sepia adjustment layers.
Captivate makes it really easy to import the wanted ‘comp’. Kudos to the team! In most instances you will want to import one comp, and it is possible with two different setups of the Import Dialog box.
In the left screenshot, next to ‘Photoshop Layer Comps’ the option ‘ Multiple’ is checked. If the comps were labeled well, you can easily select the wanted comp to import. It will be imported always as Flattened. The options for ‘Import as:’ are dimmed.
The result of comps import is visible in the Project Library screenshot (Import section). You see that I repeated the import process 4 times, because 4 comps are available, each being a merged image from the layers visible in that comp filter.
Second possibility is to keep the Single radiobutton checked next to ‘Photoshop Layer comps’. Have a look at the screenshot to the right which shows that situation.
Open the dropdown list under ‘Last Document State’ and you will see all the available comps.
Advantage of this second workflow is that you can see which Photoshop layers are selected for import. You could eventually edit those selections, but be careful. You can import layers in this case as well, but I would not recommend that if adjustment layers are used. They cannot be imported into Captivate, only the real images.
Since you will mostly import only one comp the choice for the Import workflow is free, whether with File, Import or with the Import button in the Library.
Not mentioned so far, because you’ll find this in all blogs and video about Photoshop roundtripping. The ‘green’ checkmark next to the Photoshop folder, which indicates that the original PSD-file is in synch with Captivate. If your Photoshop expert updates that file in any way: adding layers, editing content on one or more layers, correcting typos in the text layers this will be reflected in Captivate by a color change in that round checkmark. Clicking the red checkmark will allow you to update and have the changes automatically be imported and applied in Captivate.
Last week a similar question appeared here in the portal, about using Images in Matching questions. I posted an answer without having tested it out, because Matching questions are rather different. Today I found some time to double-check my answer, and want to post about the possible problems. You’ll get – as usual – an example project as result of the exploration.
There is one attempt on question level, and 3 attempts on quiz level. Review Quiz is possible after passing the quiz or having exhausted the attempts. You can use a scalable version using this link, or watch the embedded version below:
You should not activate the Shuffle option, because that will not work if images are present.
Changing the vertical alignment for the numbering leads to problems. Often the numbering just gets lost.
As you may have experienced, it is not always easy to drag the item to the correct one in the second column, especially for the second slide.
Since the added images are custom objects, they are below the embedded objects on the quiz slides (z-order). That makes exact moving difficult, and editing the colors of the SVGs (second slide) as well. Some tips:
Many users wanting to take advantage of the Ready-to-go slides available through the Assets panel in 11.5, are blocked when trying to customize those slides. In a previous article I offered a step-by-step workflow to find texts or images you want to replace by your text or images. That was not so hard, and you learned to use several panels (Timeline, Master Slide, Object States, Library).
For Interactions the situation is more complicated. You will not find a complete 'How-to' in this blog. Some interactions are rather easy to understand and customize, other interactions however need an in-depth knowledge of Advanced actions and variables. Those slides never use Shared actions, which would be easily found in the Project Library. This blog will try to help you identify the components (actions) of the interactions, how to 'read' them and tips for customizing. The workflow will be explained using a Knowledge Check slide from the project 'Alliance'. The interaction can be told to be of intermediate level. Understanding this workflow will allow you to customize easy and intermediate level interactions. For more complicated interactions this may not be sufficient. Maybe find help from someone experienced in Advanced actions.
Let us continue with the same slide from the Alliance project. Select the object KC_1. Its Properties panel shows up, switch to the Actions tab. Open the Advanced action 'KnowledgeCheck_Select1' by clicking the Browser icon. It shows a list with 5 lines, which I will label as 'commands':
The first command line 'Assign.... true': gives a value 'true' to a user variable 'sales_knowledgeCheck_correct'. The name of this variable indicates that it needs to be true for a correct answer, 'false' for a wrong answer. You can check this by reading one of the actions on the three other objects (KC_2...KC_4), where you will read that the given value is 'false'.
The other command lines are used to change states for the objects, to indicate which object has been selected (active). You can find more explanations about multi-state objects in the first part which I mentioned in the intro.
Open now the unique action 'KnowledgeCheck', linked to the unnamed Smartshape_337. In the Timeline you can see that it is the Submit shape button. In the Advanced Actions dialog box you see that this is 'conditional' (marked in red). In that case "reading' will be easier if you switch to the Preview window, which you do with the arrow button top right, which I marked with a green box:
In the Preview window you see that the state of two multistate objects will be changed depending on the value of the user variable sales_knowledgeCheck_correct. Identifying those multistate objects allow you to edit the states as explained in the first blog.
In the example the first answer is deemed to be correct. You can move the shape buttons KC1-KC4 around, to put the correct answer in another location. No problem, the interaction will continue to work as expected.
You can safely delete one of the wrong answers in this particular use case. That may not be the case for all interactions. Here however the final action (Submit button) is in no way checking or taking into account the number of answers. You only need at least one correct and one wrong answers.
If you want an extra answer, you'll have to decrease the size of the answer shapes KC1-KC4. For the 5th answer you can duplicate one of the answers with the right-click menu or the shortcut key CTRL-D (Cmnd-D on Mac). Use the Align options (or toolbar) in the right-click menu to put everything in place. The name of the duplicate answer will probably start with KC_ as well, but not necessarily be 'KC_5'. You don't need to edit the name but I did so (Properties panel) just to clarify. That duplicate answer will have the same states as the source answer. You can check using the Object State panel.
It is however necessary:
Open one of those actions using the Browser icon in the Actions tab (see Step 2 for a screenshot).
The first command line is fine. The Change State lines set the state for the selected answer to Active, the other answers get state Normal. For all those actions a sixth command is necessary to set the state of the new answer to Normal. Steps for KnowledgeCheck_Select1 are indicated in the screenshot below and you'll find the numbers in the explanation:
Switch to the action KnowledgeCheck_Select2 using the top right dropdown list:
You still need to attach this new action to the answer KC_5 and you are ready for testing:
Tip: if you want to explore the Advanced Actions dialog box, you can read this blog.
This is only one example of customizing a Ready-to-go slide. Some interactions are more complicated in those projects, some are easier. If you are in for a challenge, look for the Flipcard interactions, Glossary interaction or some Click/Reveal interactions.
Do not hesitate to post questions, comments if you are stuck. If possible I will try to help.
]]>In the past I already posted some articles with tips about inserting Slides from those projects in your project. To customize those slides you often want to edit texts and replace images. If you are new to Captivate, finding an image can be frustrating. You expect to be able to select an image by clicking it on the stage, but that is not always the case. This article will try to help you in your search. Follow the steps in sequence. Depending on the situation you will not need all steps. Meanwhile you may discover some ‘tools’ as well.
Text mostly is not that hard to find, although there are some exceptions which will be mentioned. All steps here, except when indicated, are valid both for non-responsive (blank) and responsive projects. Example screenshots are taken from the available Quick Start Projects.
If you find this helpful, will write another article about customizing interactions. That will be not as easy, and may need more learning about tools.
In the newbie UI the timeline panel is collapsed at the bottom, and you see only its title bar. Open the Timeline panel by clicking the Title bar. This is your primary tool. You may ignore that this panel can also be used to select objects like images and text containers instead of clicking them on the stage. Especially when you have a lot of objects, which overlap, this may be an easier for selection. Selected objects have a different color (darker blue) than unselected objects.
If you can select the image on the stage or on the Timeline panel, and you want only to replace that particular image, it is easy. Look in its Properties panel, where you’ll see the name of the image. Click that name and point to the new image. I would recommend to have it imported to the Library (see further), but you can also find it on your system. Once it is imported, it will automatically appear in the Project Library.
Screenshot is for the slide ’70/30 Layout with image horizontally’ from the QSP ‘Alliance’.
I didn’t encounter this other possibility yet on a Ready-to-go slide but have not checked all of them. It is possible to have an image as background on a slide. In that case it will be visible on the state, but not on the Timeline. You can only see that image as shown in this screenshot:
You see that a Custom background is used. It is an Image, and under ‘Slide Color’ you see a preview of the image. Clicking the small triangle at the bottom allows you to choose another image.
If you cannot select the image on the stage, nor in the Timeline it may be on the used Master slide.
Click the Master slide button, and the Filmstrip will be replaced by the Master Slide panel. The master slide on which your slide is based will automatically be selected. It is possible that need to scroll to see that selection, it is a thick blue border.
Keep the Timeline panel, it is also used by master slides. Try to select the image either on the stage or in the Timeline. If you are able to do so, you can replace that image the same way as on a slide. All slides based on this master slide will be updated automatically and show the new image.
Screenshot is for the slide ‘Image 1’ from the QSP ‘Wellbeing’.
Similar to slides (and more used) an image can be used as Custom background in a master slide.
For a Fluid Boxes project it is also possible that a Fluid box is filled with an image. Same comment as with the background for master slide. I have not detected this use of images in the QSP-slides which I have screened.
No luck so far, no images on timeline of slide nor master slide? You are able to view that image when previewing the course, but it is not visible in the editing environment on the stage? In that case the mysterious image is probably in a state of a Multistate object. Same can be possible for text, which appears when previewing but is invisible on the stage when editing.
Preview the slide (in browsers) and try out the interaction, mostly by clicking buttons or arrows. Try to remember one of the images which you want to replace.
When back in the editing environment, you probably will have an image on the stage. Use the right-click menu to ‘Find in Library’. The developers of the QSPs will have labeled the images in a consistent way. Try to find the image by scrolling in the neighbourhood of the selected image.
To see if it is used in a multistate object, click the Usage button in the Library. If this confirms that the image is on the same slide, you have found the multistate object.
Screenshot: this is the slide ‘Slideshow Layout’ from the QSP ‘Business’. The image which shows on the stage is labeled ‘photo_1’. Near that image I found the one needing to be switched ‘photo_4’ and it is confirmed that this image is also used on slide 2., in state4.
Open the Object State panel by clicking the State view button in the Properties panel for the Multistate object.
In the Object State panel, find state4. You can now follow the same workflow to exchange for another image as described on top for the very first step:
When you are finished editing states, you can return to more editing for the slide after clicking the Exit State button on top (bit far away IMO).
To find a hidden text, it is not so easy because texts are not in the Library. You need to preview. If the hidden text appears after having clicked some interactive object (button, arrow) try to remember its location and size. In that location you may have another text or image, but it can also be an invisible shape. In editing environment try clicking in the remembered location. If you see a selection rectangle with handles, try its State view button.
Typical slides with multistate objects are the Flipcard slides and the Accordion slides. If you cannot find a text… ask here or in the Adobe forums. I have helped identifying multistate objects for multiple users.
Recently I published a blog about what seems to be 'hot' topic: how to replay a slide, how to reset a slide. That blog didn't include an example file.
When coaching a training I often use Captivate tutorials, more than videos. This particular topic needs such an interactive approach, to allow to experiment, to get a 'feeling' of the difference between Replay and Reset (with or without an On Enter action). For learners I provide the cptx-file. Here I will only share the HTML5 published output.
You will see that I borrowed design elements from the Quick Start Project 'Safety'. The interactions were created from scratch.
After a short rehearsal of terminology and the step-by-step workflows you'll be able to see 4 different examples:
You may detect several techniques like Forced view, which need using some user variables. Quiz slides do not use the default two-step Submit process, but show a Continue button when the Submit button has been clicked.
You can watch the embedded version, or use this link to play a scalable version. I recommend to use the link. The embedded version seems to have long loading times.
You may have missed animations in the tutorial. There is a reason. While it used to be possible to Reset an animation, that feature is broken in the version 11.5.1. At least for the animated GIF which I created. I have already been searching since a couple of weeks for a workaround without success. I will create an OAM as well, to check if has the same issues. Too bad, it was a fun animation:
This is an basic article because often questions about this specific feature appear on the social media. This week I had another one in this thread. The question was specific for Multiple Choice questions with multiple correct answers. It is a very basic post, not meant for advanced Quizzing users.
A penalty is a negative score linked to a question (or an individual answer for a MCQ, see below). It is essentially meant to avoid ‘guessing’. Think about a T/F question where a learner always has 50% chance to choose the correct answer, without proving real understanding. In Captivate you can add a Penalty for each type of question in the Quiz Properties panel. You add it as a ‘positive’ number. See this screenshot:
The Penalty will appear in the Advanced Interaction panel, column Negative points:
You can have a hands on experience with penalty, when playing with this short quiz (more explanation later on), has only MCQ type of question. The previous screenshot of the Advanced Interaction panel was for this example file. Either you watch this embedded version (fixed resolution) or you use this link to open a scalable version:
For this example I have used design elements from the most recent Quick Start Project ‘Business’.
For all other types of questions a learner gets the score for a question only when everything is correct. That can be very frustrating for learners if they just missed something. That is certainly the case for a MCQ with multiple correct answers, but also for a Fill-in-the-Blank with multiple blanks, or a hotspots question with multiple hotspots. However those other types have no inbuilt partial scoring.
To set up partial scores, you need to activate the option ‘Partial score’ and in this case the option ‘Multiple answers’ is of course also needed. If you do not specify the exact score for each answer, both score and eventually penalty will be equally distributed. But it is much better to identify the score and penalty, because each answer can have a different weight: some are more easy to detect than others.
For that reason you need to:
After entering individual score/penalty the score and the penalty on the Quiz Properties will look ‘dimmed’, but they are calculated as sums from the individual positive and negative scores of the answers. I prefer the expert UI because I can have both Properties and Quiz Properties next to each other, or at least both visible at the same time. Here an example for one correct answer, 6 points out of the total score of 15 points, because the two other correct answers have a score of 5 and 4points:
In this screenshot you see the ‘penalty’ or negative score for one of the wrong answers:
This wrong answer has a score of -4p, whereas the second wrong answer is estimated at -3p, which leads to a total penalty of 7points.
It may be less logical for a MCQ with ONE correct answer, isn’t it? However the term ‘partial score’ is also valid for ‘partial penalty’ as you could see above. You may have several wrong answers, and some may considered to need a bigger penalty than other wrong answers. This means really differentiating the penalty which is available for MCQ with one correct answer. The first question slide in the example file was set up that way. The correct answer was rewarded with 10 points, the wrong answers had 3 different penalty scores. Here is an example:
Something is wrong with the ‘total’ penalty in the Quizzing Properties however. It has been calculated as explained above: sum of all the negative scores. But in this case, the learner can only mark one of the wrong answers, that penalty of 10 points can never exist.
The reason for the example file was the thread I mentioned in the introduction. In the example file, the Quiz attempts are set to Infinite, but the attempts on question level are limited to:
The second and third question are identical, but the second has no partial scoring, the third has partial scoring turned on. Captivate will see a question with a partially correct answer as a ‘correct’ question, and include it in the system variable cpQuizInfoTotalCorrectAnswers. That has also its consequence for the attempts. If you give only one correct answer, the attempts will be considered to be exhausted, you’ll not have the possibility to add correct answers. Try it out: you will see that you can use the 3 attempts always on the second question (as long as you don’t have all the correct answers), but not on the third question. That is a problem!
For a hands-on experience, have a look at the recent post with a Captivate tutorial about this topic.
Expression cpCmndGotoSlide = cpInfoCurrentSlide – 1
Continue
Whether you need the command Continue depends on the setup of the slide. If you leave it out, the play head will remain paused at at the first frame of the slide.
The advanced/shared action is essentially a translation from a still older action. , where more system variables starting with ‘rd’ existed, allowing a simple action instead of the one shown above. Reason: besides the cpInfoCurrentSlide, there was a second system variable rdInfoCurrentSlide. The first one was meant only to show the slide number, and for that reason starts its index with 1. The rd variable, like most system variables, starts its index with 0. , The simple action was:
Assign cpCmndGotoSlide with rdInfoCurrentSlide
Common misunderstanding is that this action will also ‘reset’ the slide which is NOT the case unless for very simple slides. Main reason: the play head never ‘re-enters’ the slide. Re-entering the slide is necessary to restore the original situation, either automatically, and/or by having an On Enter action being done again.
Hope we use the same terminology. Reset slide to me is to restore the slide to the situation it had when you first entered the slide. During the first visit of the slide lot can have been changed. Here is a not exhaustive list:
Essential for resetting is to re-enter the slide, to have the playhead revisit the On Enter slide event. For some of the described items that will be sufficient, for others it will be necessary to add an action On Enter. I demonstrated this situation in the recent presentation at Adobe eLearning World. You can find the recording still online in this portal. I will explain how to re-enter the slide (2 workflows).
Two workflows are possible (explained only the second one in the old post, but it has failed at least in one of the more recent releases and pushed me at the first workflow):
Easy workflow, step-by-step:
Go to Previous slide
The play head will rewind to the dummy slide and since it is so short almost immediately (re)enters the present slide.
Drawback: you increase the number of slides. That may be annoying if you show the number of slides (cpInfoSlideCount) and/or if you use the TOC (where you’ll have to hide the dummy slides). I started using this approach in a version where micro-navigation had problems in HTML5 oiutput.
Tip: to avoid annoying flickering in case of low bandwidth, prefer a similar look for the dummy slide as for the present slide. I mostly use a duplicate, taking out all interactive objects and actions.
It is bit more complex but avoids adding slides. Workflow:
The variable and the actions can be reused on all slides.
As mentioned before, some items will reset automatically when re-entering the slide by one of the described workflows. Here a non-exhaustive list from my experience:
How do you reset these items: by creating or editing the On Enter action. That is beyond the scope of this shorter blog. You can see multiple examples in some slides of the Quick Start Projects, or on my blog including the sample project I added to the mentioned presentation. I include that project here as well. Check the On Enter actions (and the consequence of missing such an action on the first slide).
Look out for a Captivate tutorial to illustrate the difference for several of the mentioned items. It will be published soon on this blog.
Recently another request on the Adobe forums appeared about quiz slides:
I answered within a short time showing a screenshot of such a question slide, quickly designed:"....insert images as the Options/Answers in the Multiple Choice Questions"
All question slides are based on a dedicated master slide. One unique master slide is used in any theme for MCQ (one answer and multiple answers), True/false, Fill-in-the-Blank and Sequence questions. Typical for those master slides is that all the items are embedded, they have no individual timeline. You'll find more information in my other blogs. The most important part for this use case is the so-called Answer area:
That particular item is the container for the Question answers. It is however NOT possible to edit the individual question answer captions.
Even with the default setting in Preferences which prefers Smart Shapes over Text Captions, all items on quiz slides are always captions! Question slides need a long due refurbishing, shape buttons as quiz buttons are also not allowed.
To make place for images, you need to make the Answer area as big as possible. Move the buttons to the bottom, make the feedback messages as small as possible and move them downwards as well. Move the captions at the top as high as possible (Type of question, Progress indicator in this case as well, Question). Now you'll be able to increase the size of the Answer area:
Only on quiz slides it is possible to edit the individual answers. I increased the number of answers to 4, and rearranged the answer captions to make them as big as possible. I took out the numbering and the text caption placeholder. You see the four answer captions inside of the (red) answer are:.
As most embedded items on the quiz slides, those answer captions have functionality built in. I would like to compare those captions with 'hotspots'. When you click a caption, the radiobutton will be selected. For a MCQ with multiple correct answers, it will be a checkbox that is selected.
All embedded objects are always on top of the stack (z-order). If you insert an image in the area defined by the answer caption, it will be below the 'hotspot' and the functionality will be preserved. That is the only trick I used to have the resulting question slide with the maps of some European countries (SVGs). Since it is an original quiz slide, all functionality (Retake, Review) can be used.
The workflow is also valid for quiz slides in question pools.
In a recent memory game which I published here last week, second variation of the game shows buttons which seem to rotate when clicked. Users ask me how I made this possible? The InBuilt states of a button (Rollover, Down, Visited) and the custom states have their location and size locked to the Normal state. You can see this in a screenshot where the Rollover state is selected in a button created from a SVG:
Watch the lock symbol in the bottom right corner of the state on the stage (marked by a red circle). You see the Properties panel, Options tab: Transform options are all dimmed. That remains the case even if you click the lock symbol a couple of times: it will disappear but you will still not have the Transform possibilities.
It IS possible to replace the image in a state using the style tab, as illustrated in this screenshot:
However using this possibility for a rotating button would mean creating multiple images (in this case in a vector application like Illustrator) for the different states of the button to be rotated. Clicking the button should trigger an action ‘Change State…’ where the appropriate Custom state is replacing the Normal state. You cannot replace the Rollover/Down states, they would have to be taken out or have a ‘neutral’. appearance
That type of cumbersome workflow (for the game 4 images for each button, 3 extra to be created in Illustrator) reminds me of the old processus for creating image buttons, or the old captions where you needed a graphics application and a text editor. That is the reason I looked out for an alternative to be done entirely in Captivate.
Lot of developers escape the problem by using a click box on top of a static (non-interactive) multi-state object. The click box, invisible by definition, is used to trigger the ‘Change State’ command for the multi-state object. That is functional, but why use two objects when it can be done with one. Another use of the ’empty Normal state’ which I will explain in a future blog for static objects. Here you find the workflow step-by-step used for the rotating buttons in the game.
Delete the Rollover and Down states in the Object State panel using the right-click menu. Don’t be confused by the fact that the Actions tab has disappeared when in Object State view, this SVG was activated as button:
Repeat this third step as many times as you need until you have all the required states (depends on the wanted rotation angle of course).
For the button use the simple action ‘Go to next State’ to be triggered by the On Success event of the SVG-button. Deactivate the option ‘Continue playing Project.
Test using F11, Preview HTML in Browser (non-responsive project). SVG as button is only supported for HTML output. If you want to test in a Fluid Boxes project, you’ll need to use a static fluid box to be able to add the image to states.
You will not see the rotation as effect, because effects are not possible in states. If you really want to mimick such a rotation, make the rotation angle smaller and use a While loop.
In fact this workflow is similar to using a Click box on top of a multi-state object: the role of the click box is taken over by the invisible SVG, and the static multi-state object is replaced by custom states in the button. It is not really necessary of course to use the same image for the invisible button and the added images. I just find it easier because you have a reference frame which is the bounding box of the invisible SVG. You have to be sure that clicking the SVG image in any position will be in the bounding box of the invisible button.
As you probably already understood, this workflow is only possible when the bounding box requirement is fulfilled. It is not a solution when you move the button to another location using a motion path. If you are on the most recent release (11.5) have a look at the Quick Start projects which have a horizontal accordeon layout. You'll see how complicated the advanced actions are due to the fact that you cannot move a button.
]]>Last week I presented at the Adobe eLearning World 2020 “Deep dive into Captivate with Advanced and Shared actions’. I had prepared 3 different scenarios, to be ready for any audience. Due to the poll before the session I decided to go for the ‘newbie’ scenario because the majority was new to Shared actions, and a considerable amount of attendees even to Advanced actions. That means that intermediate and advanced users were perhaps disappointed. To remediate I plan some blogs and examples as illustration. This is the first one.
It is possible to have the command ‘Execute Javascript’ embedded in a shared action. When talking about games, randomization is mostly used but not a ready-to-go feature in Captivate. In the session I showed a very simple board game where the tossing of a dice is simulated, and the board cursor advances based on the result of the dice toss. That was realized with one shared action.
This game uses random numbers as well. It is a memory game which can be used in many variations due to the flexibility of shared actions, variables and multistate objects.
You will learn about the game rules in the game. There is an easy and a more complicated way to play the 3 games. Hope you don’t keep only the easy one if you are in for some memory training:
Play with the rescalable version using this link or with the embedded (fixed resolution) version:
Have fun!
Recently i presented ‘Deep dive into Captivate with Shared and Advanced actions’ at the Adobe eLearning Word 202 conference. During that presentation I used the ‘newbie’ scenario because the start poll pointed out that the majority of attendees were not really familiar with those actions. For the intermediate or advanced user, will try to post some blogs about tips which I would have included in my alternative scenario. You may have seen the memory game which I published yesterday, and shows how you ca n include short JS scripts in the shared action.
The following tips are linked with my more than 19 years history of using Advanced actions, and 6 years with Shared actions. My viewpoints have changed quite a lot in that period. Presently my natural attitude is to reflect in most situations whether a Shared action is not appropriate. Why? One of the reasons is of course rIusability (with an external library), but even more important: it forces me to find better workflows.
Throughout the presentation I used a demonstration project (include d here as well) FlipCard. It started with an original slide from the Quick Start Project ‘Alliance’. I added two slides where the functionality of the original slide was extended to have more functionality (toggle flipcard, forced view, reset of slide on re-enter). I used two different workflows for the Advanced action and the Shared action slides. Why? You’ll discover it below.
You can download the project file using this link.
Advanced interaction panel (F9) shows all actions on the 3 slides
As you can see in the screenshot above, this slide has no action On Enter (normally meant to Reset), only 3 similar advanced actions for the flipcards. Those cards are shapes used as buttons, with two states: an image in the Normal state and the explanation in the Active state. Here is a screenshot of the advanced action for one flipcard:
The state Active is shown instead of the Normal state, a spin effect is applied and the shape button (flipcard) is disabled. This means:
To fix the issues of the first slide, the advanced actions used here look like this example:
This advanced action has two decisions. The changes in a nutshell:
When revisiting the slide, some issues are now automatically solved, but to have the slide behave completely like the first time, an action On Enter for the slide was used.
That action will hide the Next button, and reset the tracking variables to their default value, 0.
Many expected that I would convert the Advanced actions of the second slide to shared actions (at least for the flip act), but I used another workflow. If I use the Shared action ‘FlipAct’ as template for an advanced action for the first flipcard (as demonstrated in the session) it would have looked like this (Preview window):
That looks more complicated:
Result of this workflow is that only 3 parameters are needed for the shared action FlipAct:
For the Reset issue, I could have used an Advanced action, slightly different from the second slide. However I also converted it to a Shared action. Why? When I drag that SA to another project, all variables (none are parameters here) will be created. For that same reason, I added some variables (here 7). This is a filled in action to be used On Enter, only the last two commands need a parameter. One of them is the number of flipcards (value fo v_max):
For those who are not yet sure that the second workflow is better for shared actions, have converted the first Flip advanced action to a shared action. These would have been the needed parameters:
This is the situation if you have only 3 Flipcards. If you have 5 flipcards, you’ll will have 2 extra parameters: tracking variables. The risk of missing to indicate the correct parameters when attaching the shared action to the shape buttons is much bigger than with the shared action I used in the third slide.
Some panels in Captivate are ‘under-used’, perhaps because they never show up automatically in the Newbie UI which is the standard after installing the application. You may have discovered the Branching view panel, but from what I hear on the forums the Advanced Interaction panel is much less visited. Personally I use it very frequently, find it very useful (contrary to the Branching view) in many circumstances. Both panels will open as floating panel.
You have 3 ways to open the Advanced Interaction panel::
Although it looks like most l panels, it is a ‘passive’ panel. You cannot really edit an field in this panel, but that doesn't mean you have to skip reading the rest of the post.
Name of this pane can be confusing. It is not limited to information about Advanced Actions (often confused with interactions).Let us explore it in-depth.
In the top of the panel you’ll see the control bar. of this screenshot. I ‘translated’ the tooltips:
From left to right:
Some of the column headings are confusing. Let us start with a very simple state of the table, which can be supplementary to or an alternative for the Filmstrip. All filters are deselected in this screenshot (marked in purple). Advanced interaction panel is floating, you can resize it. This is the minimum size which is possible, the missing columns are not relevant in this status.
In this situation you see only the slides (top level item)… with the exception of the Question slides. The first column shows the slide numbers, the second the name if you edited the name. The missing slides 4-11 are quiz slides. It is a bit strange that the Results slide is showing.
The column ‘Success’ heading is misleading. On slide level this column shows eventual actions triggered by the On Enter event. The actions are identified: simple action (slide 1, 13), Advanced action (slide 2) or Shared action (slide 3).
The panel is dynamically linked to the Filmsbrip. If you click another slide, it will be selected in the Filmstrip and its Properties panel will appear.
Similar the column ‘Failure is showing the actions triggered by the On Exit event of the slide.
When the filters of the first screenshot (control bar) are activated (sorry Hidden slides i added here, but is not relevant), this will be the result:
All objects from the filter categories are now visible, with their actions. The type of object is in the second column. ‘Smartshape’ is a shape button, Image is a bitmap image used as button, SVG is a SVG used as button. I don’t have click boxes, TEBs nor Drag&Drop in this example.
Success column shows the action triggered by the Success event in this case. It doesn’t matter whether there is a score or not.
“Failure” column is still not a correct heading for most instances. Only when the number of Attempts is set to 1 it will be a real Failure event. For attempts higher than 1, the name should be replaced by ‘Last Attempt‘ action. If the number of Attempts is Infinite, there will never be a Failure attempt, you can ignore that column.
Watch the other columns having an entry, they summarize the settings for scored items and quiz slides: score (Points), penalty (Negative score), whether the score is added to the Quiz total (default quiz slide’s score is always added, but not marked here), if they are included in the quiz and reporte (get interaction ID-. All settings of the Reporting section for interactive objects.
Advanced Interaction panel is fantastic. When using Drag&Drop slides the Success column will show the action ‘On Success’. When you have a limited amount of Attempts, the ‘Failure’ column will sow the ‘Last Attempt’ action. But if you are a fan of the Object Actions (like me) you have to know that they will NOT appear in this panel. Maybe in a future release?
A question often appearing in the forums ‘I have answered every question correctly, but I don’t have a score of 100%’.
Answer; use F9 to open the Advanced Interaction panel. Check the total score on top (all filters are selected by default). Is that what you expected or is it higher? If it is higher look for other scorable objects in the Points column.
Example 1: You have created some enhanced advanced actions to replace the present ones. To double-check if the replacement has been done for all the events, use this panel.
Example 2: After testing out an advanced action, you’ll replace it with a shared action. Did you not forget some?
Example 3: some slides do not reset on testing. Check if they have (or need) an On Enter action. Find the slide without On Enter action in this dialog box.
Example 4: because your project now needs to be viewed on multiple devices and browser resolutions, you decided to replace all images used as buttons by SVGs. Filter on the buttons and you have a good overview of tthose image buttons (at least if you use a consistent labeling system).
Looking back in my blog history, I remember very well the first Memory Game created 10 years ago (with version 5.5). It was quite an adventure, because I wanted to prove it to be possible without having to use ActionScript (since only SWF output was available).
Now 10 years later, ActionScript has been replaced by JavaScript but I still try to create games without having to use JS. That is possible when randomness is not necessary as is the case for this game. However newer features like multistate objects, SVGs which can be used as buttons, and most important 'Shared Actions' make it a lot easier now. Kudos to the Captivate team!
Have fun with the embedded version (fixed size), or the rescalable version using this link
The structure of this game allows a lot of flexibility. The two challenges have a different total number of shapes. Shapes can be replaced by images to convert it into a kid's game. It is also possible to increment the number of pairs, or to make a search for trios instead of pairs.
SVGs used as buttons have several advantages. You can limit the clickable area to the image, instead of to the bounding box. They remain crisp ion all devices, whatever the browser resolution. Disadvantage is that they take a while to redraw, which you may have seen when the slide was reset.
As you could read I used:
There are many ways to create a Click/Reveal interaction. Some are very old (with jump to slide), others are pretty old (show/hide) and lot depends on the exact situation. It is possible that I will make a complete analysis, although I don’t think this will appeal to many users.
However my sense of justice is too keen, and I cannot leave this type of comment (newbie) without reacting:
“This is basic stuff right! Why is it so complicated? “
If you want to know more, explore the discussion link.
I created a quick example of the most basic workflow which can be used. Will explain step-by-step.
A two-slide project. The Click/Reveal interaction is on the second slide. You see three characters, which act as toggle buttons. When you click a character, a speech bubble will show up, when you click the character again, the speech bubble will disappear.
There is a Back button top left (but you can also use the Back button on the playbar which I have left in this project). You'll see that when revisiting the slide, the original situation is reset: no speech bubbles. Even if you leave the slide with one or more speech bubbles opened.
You can use this link to view a rescalable version or watch the embedded one below (fixed resolution):Download the Characters and insert them on the slide. Check the option ‘Use as button’ in the Properties panel (red outline in screenshot below). Leave the option ‘Retain state on slide revisit’ unchecked (green outline)
TIP: you don’t have to do this three times. Select the three inserted Characters (using CTRL button to add to the selection, or by creating a selection rectangle which cuts the three characters. Check the option in the Properties and it will be done for all the Characters.
Select one of the Characters. Click the State view button in the Properties. Look at the screenshot above, where you see the button with a Blue outline. The Object state panel will appear, which will have 3 states because you have a ‘button’: Normal, Rollover and Down. I deleted the last two ‘InBuilt’ states. They were identical to the normal state. You can do that with the right-click menu as shown in this screenshot. The Down state was already deleted, here the Rollover state will be deleted.
Now add a Custom State using the New State button. Make sure to choose Custom under the first dropdown list (click the triangle button). You can edit the default name (NewState1). You have seen in the previous screenshot that I labeled it ‘Answer’.
That state will be selected, and you can add the speech bubble (eventually even with audio attached to it) and or any other object you want. Use the stage, where all will be dimmed in the background except your new custom state:
Close the Object State panel using the Exit State button at the end of the top Big Button Bar:
Select the Actions tab in the Properties panel for the selected Character button. For the On Success event set up this action:
You may see how easy it is to detect the multistate object to choose from the second dropdown list, since its name appears at the top of the Properties panel.
IMPORTANT! You have to uncheck the option ‘Continue playing the Project’ (red outline). That will prevent the playhead to be released. Will not expand in this article on pausing the timeline.
Your toggle button (character) is ready. Start testing using F11, Preview HTML in Browser.
What are the advantages of the described workflow over the older Hide/show workflow which was chosen by the user:
Hope you understand why I labeled this post as being a 'super easy' workflow. Multistate objects are available since version 9, there is no reason why you want a more complicated workflow in the 3/4 last versions.
To be honest, there is one disadvantage: you cannot apply an effect to the Speech bubble when appearing.
]]>If you have watched my course about Using Shared Actions, you'll already know that this is one of my favorite features. It makes it possible for newbies to create rather complicated tutorials without need of programming skills.
I already uploaded a game recently, here is another one. You can use this link or play with the embedded one:
You prefer step-by-step workflow for this second lesson over a video. Great. Let us start with this second lesson, explaining how to use the shared actions from the first project in your project. Believe me: it is as intuitive as the first lesson.
To follow this workflow, you need a project with at least two slides:
Here is an example of the Timeline of the project I use, the names are mentioned above::
If you are eager to start but do not have time to create a custom project, you can download this one:
Lesson2Start
Please do not use the SVGs from SVGContainer in your projects. They were extracted from a licensed AI file.
Have a look at the variables, using menu Project, Variables. The default view will show you the two user variables which are added to each project:
Use the File menu, option Import, External Library. You have to point to the original project which has the shared actions on board. In this case that will be the start project which you used in the previous practice; “SlideShow”.
The project will not open, but its library appears as a floating window in the left top corner of your screen. You will probably need to increase its height, and collapse the Images folder to see the Shared Actions folder clearly.
You can use any object directly from this external Library in your project. I used the Home button (SVG). However for the Shared Actions, it is better to not use this method. It can be done if there is only one independent shared action, but in this example the three actions are somehow linked due to the used variables.
Select the three shared actions in the external Library, and drag them to the project library. They will appear in that library with the Usage set to 0. Be sure to drag all the actions at once. Reason: they share some variables. which could lead to the creation of multiple instances of the variables. You will check this in step 5.
Use Project, Variables and… surprise! The variables used in the shared actions have appeared, including their default value and description
You can now insert the variable v_counter in the text (see Timeline) SS_Counter, using the X button in the Properties panel, Character part.
The text will look like this:
…. $$v_counter$$
Beware: if you see more than one instance of a variable, it means that you didn’t drag ALL the shared actions at once. In that case, please delete the shared actions, delete the variables and retry Step 4.
You can now repeat what you learned in the previous lesson: drag the shared actions to the slide and to the navigation buttons, and choose a ‘value’ for the parameters.
Do not forget to test if everything is working as expected. Use F11, Preview HTML I Browser for the best preview.
The step-by-step workflows described in this and the previous blog (or in the video and the next video to be published soon)) can be used for all the interactions in the Demo project, provide you have the shared actions. Not only for those rather simple interactions! It is also possible for more complicated projects like the Matchstick game, which I published recently, and for many more use cases.
I sincerely hope that at least some Captivate users will realize possibilities. Ask an expert to design shared actions which can be used by any Captivate developer, without having to dive into advanced actions, variables etc. .
I may post an 'epilogue' to this short crash course, listing up some Q&A. If you have a question to contribute, do not hesitate to post it in a comment.
]]>In Lesson 1 you started from an existing project, which had created objects for the Slide show AND shared actions in the project Library. Topic of the lesson: workflow to attach the shared actions to a slide event (On Enter) and to buttons (Success event). Lesson ended with the proposal to create a personal project with two slides. First slide is a title slide with only a Start button (Go to Next slide). Second slide needs two multistate objects. Number of states is not important but has to be the same for both objects (you can have identical states if wished). Two navigation buttons (Back and Forward) and a button to get back to the first slide and your homework is done.
For this video lesson you need:
You will transfer the shared actions to your custom project, and reuse them.
After finishing the workflow, you can compare your result with 'Lesson2'
Take a look look at the setup of the second slide. In the Timeline I grouped all design elements at the bottom.
The 5 items on top of the group are:
Open the Variables dialog box, using Project, Variables. You will see two variables: v_counter and v_max. The latter will store the amount of items in your show. Their default values are not important, they will be set with the actions. Just for clarification I set v_counter to start with 0 and v_max to 5 because the example has 5 photos. But they are not important.
Open the Library panel, and find the subfolder ‘Shared Actions’. You detect 3 shared actions, and their Usage is stil at 0 for the moment:
Double-check in the Properties panel or on the stage that NO object is selected, that you are in the Slide Properties.
There are two possible workflows:
If you used the Library approach, the dialog box ‘Shared Actions Parameters’ will be open. If you used the Properties panel approach you need to click the {P} button next to the Action field. In this dialog box you’ll see both description of the action and of the parameters. Please give a value to all the parameters needed. You can use filtering (will post a video tutorial for a more complicated parameters set).
The Home button has the simple action to return to the first slide. This will allow you to test the reset actions in the On Enter action of step 2. Before testing you still have to attach the shared actions to the two navigation buttons. Workflow is exactly the same for both.
You can use again two workflows, similar to step 2:
Identical to 2.2. Parameters for both button actions are identical: the two containers. It doesn’t matter if you switch image with text container, sequence is not important.
You have read the introduction and watched the Demo project. This lesson will explain the interaction 'SlideShow' which you did see in the demo. You may download this start project, which has two slides. Exploration is explained in the video:
You will be exploring the start file, discovering the shared actions in the Library, and the variables. You will attach the shared action to a slide event (On Enter) and to button Success events, in both cases you will choose the parameter values.
The result of the completed lesson should look like you can see under this link. I left the playbar for your convenience.
Lesson 2 will show how you can transfer and use the shared actions to your project. If you want tot follow, prepare a project:
Even if you are very new to Captivate, continue reading!
Contrary to Advanced Actions and JavaScript, Shared actions can be USED without needing to write out or edit scripts, nor to create variables. You don't need to be able to assemble an engine for your car to be able to drive, isn't it? What do you need?
You read the introduction to a short ourse for adventurous newbies, including:
The course for newbies has TWO lessons. Each lesson comes in two 'flavors' to adapt to your taste:
To facilitate your learning/understanding, you'll get a start project to practice the workflow. You will also be able to use your personal project for the second lesson. Both lessons are about one of the 4 interactions in the Demo project (see below). Depending on the 'welcome' by the community, may repeat this workflow for the other interactions or even for a game like MatchStick game
I used design elements from the new Quick Start Project ‘Diverse’. You can open the demo project using this link:
Or watch it below (fixed resolution):
You may skip the explanation about the two types of parameters and go directly to the first lesson if you don’t like definition texts. Knowing the differences between parameters is not so important in this crash course, . BTW: the terms ‘compulsory’ and ‘candidate’ are just my personal choice, not official terms.
In a conditional action you can have another candidate parameter, the ‘literal‘. Example: you want to limit a number of attempts by the learner to a maximum of 5. If you want to be able to edit that maximum number, you could define the literal as a parameter. This can be a bit tricky, but is beyond the scope of this basic blog.
A while ago, with Captivate version 8, I created a SWF version of this game. If you have a browser (such as Internet Explorer) supporting the Flash Player plugin, you can have a look using this link. With that verrsion I could take advantage of the brand new Shared Actions, which allowed to have variables defined as parameters. In version CP7 where shared actions were introduced, that was not yet possible.
Today HTML5 output is the standard. Moreover Captivate in recent versions has added some very useful features, which I would like to use to create a new version of this game:
Why didn’t I use SVGs i this case? The stock image which I used to create the different matchsticks, did lead to smaller file size for PNG than for SVG. I know that they may be blurry when upscaled. There is no problem with the clickable area being the bounding box, due to the shape of the matchsticks. That is often the reason why I prefer SVG, but not the case here.
Have some fun with either the scalable version using this link, or with the embedded version (rules are explained in the file):
The example file has 4 slides, using some design elements (and colors) from the Quick Start Project 'Wired':
I set up a grid of guides fo-r the game slide. It will be very useful when adding a second game slide based on another word:
The timeline is used to have the Next button and the final set of matchsticks (with flames) appear when necessary. No Hide/Show actions were needed:
You see on this timeline:
You'll need a whole bunch of variables (4+15):
v_correct: will track the number of correctly removed matchsticks; start value = 0
v_moves: wil track the number of removed matchsticks; start value = 0
v_max: fixed value, number of matches that may be removed; will be populated in EnterGame action
v_visit: to track the visits to slide Intro; start value = 0
v_11, v_12....v_35: Boolean variables , one for each matchstick, start value = 0; they track if the matchstick has been removed (value = 1) or not. The labeling is using the same logic as for the Mt_ labels. That makes it easy wen defining parameters.
As the name tells, this advanced action is triggered by the On Enter event of the second slide 'Intro'.
It is an easy to understand conditional action, based on the tracking variable v_visit. On first visit the slide is played normally, on following visits the slide is skipped immediately, and re-enters the Game slide. That is necessary to reset variables for that slide.
Triggered by the On Enter event of the Game slide, is used to reset all the variables.
Similar to EnterIntro, it could be interesting to convert to a shared action. Explanation in that same future blog post (or webinar?).
This action is triggered by the Success event of the matchstick buttons, for those who should NOT be removed (hence the N in the name of the action). Here are screenshots of the action with indication of the parameters, and the description of the parameters:
The action has three conditional decisions.
This shared action has been used 9 times. Only the first two parameters have to be entered carefully, the other 4 are always the same.
This action is triggered by the Success even of the matchstick buttons which need to be removed. Here are screenshots of the action with indication of the parameters,(2 extra compared with the previous shared action: Success state and the Gr_Match):
The first three decisions are similar to those of Match_NOK. Just one exception: this time the variable v_correct needs to be incremented/decremented within the first decision. A last decision 'End' was necessary for the Success situation, where v_max removals (here 6) resulted in the correct word.
If you are pretty new to Variables, Advanced and Shared actions, this may seem very complicated.
What if you want another slide with another word, maybe another number of maximal removals?
You want to recreate such a game, maybe with other objects than matchsticks?
It could be done without having to create any variable, just by using shared actions. Wished I could explain this in a workshop . Would you be interested? It is a very nice example of the way shared actions can allow you to create interactions WITHOUT PROGRAMMING SKILLS. You don't have to believe me, of course... let me know if you want to participate You can contact me using the mail address, or go to my website and fill in the contact form mentioning this invitation.
For the problems concerning Try again, or multiple Failure messages I already offered a solution with a dynamic feedback message in a previous blog post. In this post I will try to explain a workflow for the Review issues.
The result of this workflow was visible in the sample project which I posted last week. There is a scored D&D slide as last question in first part (Timeline).
The small versions are used for the individual answer feedback, the normal versions for the global feedback Look at this example
Those checkmarks were used for multistate objects, with an empty Normal state. They are already present in the correct location during the quiz but invisible due to that Normal state. Two more states show either the correct or the incorrect checkmark. This is an example of the Object State panel, for the answer about the Shape button.
v_DD: will be toggled to 1 if the D&D slide is correctly done.
v_EffectDD; will be toggled to 1 if the Effect color is correct
v_SButtonDD: will be toggled to 1 if the Shape button color was correct
v_ShapeDD: will be toggled to 1 if the Shape color is correct
The system variable cpInReviewMode was used as well.
Three events were used, all to trigger advanced actions: Success and Last Attempt event of the Drag&Drop slide (in that panel) and the On Enter event of the slide.
Why was it not possible to use the same Correct shared action in this case? A D&D slide has no two-step Submit process, where the first step will keep the slide paused to allow the learner to read the feedback message. It is possible to imitate that behavior, but I wanted to keep it simple, by keeping the slide paused for a couple of seconds before proceeding to the next slide. Second reason: for a correct answer need to toggle the variable v_DD to 1. To achieve this, I used the shared action ‘CorrectAct’ as template to create this advanced action, which has two extra commands:
If you have problems or suggestions, post a comment please!
As explained before, showing intermediate score slides, will not affect the reporting to a LMS. It is still a SCORM requirement that each course will transmit only one score, in this case the total score of all parts of the quiz. However showing intermediate scores can be helpful both for the learner and the developer: taking decisions based on the partial results are possible.
Since that old article, the powerful Drag&Drop slides were added to the Quiz toolset. A D&D slide can be scored, results can be added to the total score. They will not completely behave as the other quiz types. Have already posted some tweaking suggestions in previous posts. The example file includes a D&D slide, which will have a Review status similar to the other quiz slides. The setup for such a Review status will be explained in a separate blog post.
It has three parts with questions about the three main stumbling blocks for Captivate users: Timeline, Quiz and Theme. You will see the progress (score) for that part on each quiz slide,. Each part ends with a custom score slide. You can answer the different parts in any sequence, but after finishing all of them, you will be able to go to the final score slide, which is the default score slide. You are free to explore the Review status using its button on the final score slide.
In the questions you’ll see that penalty, partial scoring etc have been used and are reported correctly.
Check your Captivate knowledge. There is only one attempt both on Question and on Quiz level. You can use this link for a scalable version or watch the embedded version (fixed resolution) here:
The less-known Advanced Interactions panel offers a good overview. On the dashboard three click boxes take care of navigation to the parts. You’ll see 5 question slides for the first part (Timeline), 4 for the second part (Quiz) and six for the third part (Theme). I collapsed the Drag&Drop slide, complete setup of that slide will be in the next blog post. You’ll see that I did use the Success and Failure events of the quiz slides (1 attempt) and several On Enter slide events. Both Advanced and Shared actions were used.
On the last quiz slide of each part, a Back button takes the learner back to the first slide, the Dashboard. The former text ‘Part x’ will be replaced by the score obtained for that part, once it has been done. When all quizzes have been answered, the instruction text ‘Please, select an avatar’ is replaced by a originally hidden button which allows to go to the Final score slide, which is the default score slide of Captivate.
Quite a bunch of variables were necessary.
v_TimeCorrect: will track the number of correct answers for the part. Equivalent of the global variable cpQuizInfoTotalCorrectAnswers
v_TimeMax: will be used to calculate the maximum score which can be obtained for this part. Equivalent of the global variable cpQuizIntoTotalQuizPoints
v_TimePerc: will be used to calculate the percentage acquired for this part, equivalent of the global variable cpInfoPercentage.
For the number of questions in each part, I preferred to type in the literal value. It would have been possible to make this also tracked automatically of course.
More variables were needed for the Drag&Drop slide setup, but they’ll be explained in the next blog post.
To prevent the learner to press a click box multiple times, it needs to be disabled after the first attempt. That first attempt is identified by checking the score. There is a minimum chance that the learner had a zero score, didn’t expect that to happen but if it is the case, you would need an extra tracking variable which could be a Boolean.
Click Box Success events trigger: CBTimelineAct, CBQzAct, CBThAct (Advanced actions). This is a preview of the CBTimelineAct:
The Done state of the text object will show the obtained score instead of the default text ‘Part x’. The two other click box actions are similar, you need to edit the Text object name and the slide to jump to. I preferred a duplicate action instead of a shared action, because it is rather simple, only two lines and used three times.
Shape Button SB_Final Success event: simple action ‘Jump to Slide FinalScore’
This shared action is used by all quiz slides (14) except by the Drag&Drop slide (see next post) where I used the shared action as a template for a slightly different Success action:
Last Attempt event in Quiz Properties: WrongAct (Shared action)
Similar to the CorrectAct, used 14 times and once as template for the Drag&Drop Last attempt action:
If you are worried about the + operator for the negative points: the value of that system variable is negative by default.
The avatars identifying the part on the quiz slides (needed to edit the master slides to make place for this custom group) have two extra text fields, one identifying the part, and one with the obtained score.
Same advanced action is used for all Back buttons:
The second decision checks if all parts have been done and will show the button to jump to the final score slide if that is correct.
The second decision is meant to skip the score slide during Review. The other advanced actions are similar to this one, just replace the variables. With the JS the percentage is formatted to maximum 1 decimal.
Reminder: the avatars on the quiz slides are groups – see above.
Lot more is possible of course. I didn’t insert a decision based on the already acquired intermediate scores but it is easy to do. I didn’t provide multiple attempts on quiz level, nor on question level. Comparing with my old article about Intermediate Score slides, the Review functionality is preserved however. Using the shared actions is a big improvement as well. I didn’t insert a progress indicator, because it would need more advanced actions, due to the splitting in parts and the presence of the Drag&Drop slide.
About the integration of the Drag&Drop slide, especially its custom Review state, you’ll learn in the next blog post.
I hear some suggesting: use the On Exit event instead of the On Enter event. Logically? However that event is not to be trusted and . Consequence: the frames in the inactive part of the interactive object are not visited. On Exit event happens after the last frame, which needs to be visited. Too bad, there is no ‘when leaving slide’ event, which would solve the problem. Hence this solution which is a little bit more complicated than the first solution.
View the example using this link for a scalable project, or this fixes resolution embedded one.
This progress indicator has been inserted on the first slide, displayed for the rest of the project, always on top. However it will be hidden on the first slide by the On Enter action 'EnterFirst', because no slides are viewed yet.
Each slide needs a slide tracking variable, user defined of the Boolean type. Start value is set to 0. Variable names are not important, I labeled them v_1 v_2,…..v_19 because it is easier to link them to the slides. Boring work, sure but I always have a shared action ready in an external library with a bunch of variables and import them using the trick 1 explained in Rare tips for Shared Actions. For all slides except the first one, Boolean will be toggled to 1 when visiting the slide for the first time. First slide doesn’t need a progress indicator on the first visit, since no slide have been viewed yet. The tracking variable v_1 will be used in the another action, to make the indicator visible on later visits.
Total number of visited slides will be stored in another user variable v_total, also starting with 0 as value.
A variable v_last will be used to detect if the active slide is the last slide to be viewed. This variable was not needed in the first solution.
The percentage viewed slides, which is displayed in a text shape (red) inserted on the first slide and timed for the rest of the project, is stored in the user variable v_perc.
The system variable cpInfoSlideCount will be used as well, its value is the total number of slides.
A short advanced action to make the ProgressIndicator visible after going to the Next slide.
This shared action has two decisions:
This calculated variable is used in the second decision. If it is equal to 1, the active slide is the last slide to be viewed. In that case the Normal state of the Progress Indicator is replaced with the Last state (warning about last slide), and the variable v_perc is set to 100%, will not change anymore during the session. The Else part is necessary to reset the state to Normal, so that later visits to any slide will show the progress in % (100%) again.
Description of the 4 parameters, only the first parameter is different on each slide:
The Javascript, same as for solution 1, is needed to format the percentage to no decimals.:
Tip: be careful when copy/paste this script, because the punctuation marks may not be pasted correctly if you are using another keyboard than my Belgian AZERTY one. Double-check them, pleasevar perc = window.cpAPIInterface.getVariableValue(“v_perc”);
window.cpAPIInterface.setVariableValue(“v_perc”,perc.toFixed(0));
The logic behind this solution can also be used to show a progress bar, which takes into account the visited slides instead of the default playbar which is just jumping around when navigation is not sequential. Of course you can also show the number of viewed slides instead of a percentage. Maybe you have more ideas?
All tutorials about showing progress as a percentage have the same limitation: you need to view the course in a linear way, no branching or other non-linear navigation. Even in the TOC the indicated Time at the bottom is supposing you are in a linearly visited course. In the TOC the checkmarks at the slides are the only way to see which slides have been visited in a non-linear course, there is no real progress indicator. Recently someone asked (again) for a progress indicator (percentage) that would be functional in a non-linear course.
I have created two possible solutions, All is slide-based, which is the reason for the two solutions:
Progress indicator for non-linear course
Or you can watch the embedded version (fixed resolution):
Each slide needs a slide tracking variable, user defined of the Boolean type. Its start value is set to 1. Variable names are not important, I labeled them v_1, v_2,…..v_19 because it is easier to link them to the slides. Boring work, sure but I always have a shared action ready in an external library with a bunch of variables and import them using the trick 1 explained in Rare tips for Shared Actions. Each Boolean will be toggled to 1 when visiting the slide for the first time.
Total number of visited slides will be stored in another user variable v_total, also starting with 0 as value.
The percentage viewed slides, which is displayed in a text shape (red), inserted on the first slide and timed for the rest of the project, is stored in the user variable v_perc.
The system variable cpInfoSlideCount will be used as well,which stores the total number of slides.
That shared action is triggered 19 times, with the On Enter event of the slides:
The Shared Action is straightforward and needs only one parameter: the slide tracking variable:
var perc = window.cpAPIInterface.getVariableValue(“v_perc”); window.cpAPIInterface.setVariableValue(“v_perc”,perc.toFixed(0));
The second solution where the progress will show the percentage viewed slides more correctly will be posted in another article, with its example file.
I used the edited Theme, based on the Quick Start project ‘Alliance’ which I also used in my previous post with the Survey about upgrading legacy projects. HTML5 output is not as smooth as SWF output. You can compare the old post (see link mentioned before) .
The example has 7 question slides, different types, using partial scoring and penalty. You can play the rescalable version from this link or watch the embedded one here:
We need to track the score for each quiz slide. To achieve that, a user variable is needed for each question slide. In this case, we need 7 user variables. No default value needed:
Labels are not so important, you just need to be able to link them to the quiz slides. If you have a shared action ready as in the first item of ‘Rare tips for Shared Actions‘ that is fine as well.
This action is triggered by both Success and Last Attempt events. It happens sometimes that you get an error, because the same parameter is used for both events. That is a bug in Captivate, which I have reported since a while, but the actions will work perfectly.
This conditional action triggered by the On Enter event, checks two conditions:
If both conditions are true, the slide will be skipped.
Maybe you have some comments? I don’t have a crystal ball, but feel like these two questions may pop up: