Secrets of cpQuizInfoAnswerChoice and....


Update: 

New version, taking advantage of features in more recent Captivate releases, has been published under:


Intro

This blog post is again inspired by a user question, this time in the Linkedin Adobe Captivate discussion group.  Here is the question:
"I have 4 simple survey questions in my CP file (5.5). How can I capture the yes/no answers and on another slide lead them down a specific path based on their answers? "
In the past I already answered several questions on forums about storing the user answers in variables so that one is able to create decisions based on those answers, or to show those answers later on. Both goals can be achieved using one Quizzing System variable: cpQuizInfoAnswerChoice.

Example

Play this movie and answer 4 survey questions. Contrary to normal questions, there are not 2 steps, Submit will guide you immediately to the next slide. Based on your answers there is a branching to a Beginner, Intermediate or Expert slide (you'll discover my new garden immigrant on those slides as well). For a first view, I do recommend to show the variables, it is much easier to see what is happening. That is the perfect way to track and debug advanced actions. Have fun.


Variables

The system variable is repopulated after each question. To save the answers, it is necessary to use as many user variables as you have answers to store. Since I have 4 survey questions, I created 4 user variables, labeled v_account (first question), v_hashtag, v_chat, v_devices. Because of the choice to show a text caption with the values of the variables, I created another user variable v_view  that is set to 1 if the user clicks on the button View variables.

Slides, events and actions

The example has ten slides:
  • Slide Intro: with the buttons 'No variables' (goes to next slide) and 'View variables' that triggers an advanced standard action ViewVar, very simple (see Gallery). This slide has the text caption TCVariables with the user variables, but its visibility is turned off.TCVariables  is timed for the rest of the project.

  • Slide Question1: I used the On Enter event of this slide to trigger the advanced conditional action ShowVar (see Gallery) that will show TCVariables if the user choose to. The Else part only has Continue as statement. The Submit button triggers the advanced action Quest1 (see Gallery): it stores the value of cpQuizInfoAnswerChoice in the user variable v_account (corresponding with this slide) and goes to the next slide, thus avoiding the waiting time after the pausing point of the question slide. The answer appears as 'True' or 'False'. 

  • Slide Question2: the On Enter event triggers a conditional advanced action EnterQuest2 (see Gallery); this action checks the answer stored in v_account. If the user has no Twitter account (v_account has the value 'False'), it has no sense to present the other questions because this user is clearly a Starter. That explains the Jump to Starter slide.
    The Submit button triggers the action Quest2 that is similar to Quest2, only the user variable has to be changed from v_account to v_hashtag.

  • Slide Question3/Slide Question4: only the actions Quest3 and Quest4 are triggered by the Survey question (executed when the Submit button is pressed), similar action to Quest1, now with user variables v_chat / v_devices. 

  • Slide Decision: this is a very short slide (0,1sec) that will not have been visible to you when playing the project. It was necessary to create this slide because Question slides cannot have a normal On Exit Event. I used the On Enter event of this short slide to trigger the advanced conditional action Decide that will be explained in next part. 

  • Slide Beginner: I used the On enter event to hide the text caption TCVariables. The Next button jumps to the last slide, End.

  • Slide Intermediate: the text caption is hidden by the conditional action Decide, so no advanced action on this slide, the Next button jumps again to slide End.

  • Slide Expert: similar to the previous slide, Next button now jumps to the next slide.

  • Slide End


Action Decide

This conditional action will branch either to slides Starter, Intermediate or Expert, based on these possibilities for the collected user answers:
  1. If the user answered positively to all survey questions, I considered him to be an expert. It is however not necessary any more to check the user variable v_account. Due to the previous described action EnterQuest2, we are sure that v_account has the value 'true'. That is the reason why the first decision 'Expert' of the conditional action Decide checks only the value of the variables v_hashtag, v_chat and v_devices. If all these variables have the value 'true', the user will be navigated to the slide Expert and the text caption TCVariables will be hidden as you can see in this screenshot. The option 'All conditions are true' has been chosen, hence the AND in the last column.

  2. If the user has answered positively on at least 2 questions, I considered him to be an intermediate Twitter user. For the same reason as explained in 1. I am sure about the value 'true' of v_account. That is the reason why I used the option 'Any of the conditions true' in the second decision 'Intermediate' and checked the same 3 variables. The statements are now again hiding the text caption TCVariables and navigation to the slide Intermediate.
     
  3. If none of those two decisions, conditions result in Yes, only the user variable v_account has the value 'true'. In that case I consider the user still as a starter (he has only created a Twitter account). You do not find a decision for this situation, I just let the play head continue. The slide Decision is just before the slide Beginner, and so the play head will get to that slide automatically. This slide has already the correct setup.
     

More possibilities

It is also possible to store the user answers in the same way as described, and show those answers in a text caption on a summary slide, or use the answers in a feedback or review caption
.


Widgets and Custom Questions - part 3

Intro

 
Finally got to writing this third part about using the included widgets to create custom question slides, in this case Fill-in-the-Blank questions with dropdown lists and a Matching question (but without the dragging possibilities of the default Matching question slide - functionality which is only possible with widgets from InfoSemantics).
 
For dropdown lists, perhaps you'll expect me to use the Dropdown or Combobox widgets, which are very similar in use. But since months, my friend (AS and JS wizard) Jim Leichliter warned me not to use those widgets in production because of serious memory leaks. So, waiting for those issues to be solved, I discovered another widget: Listbox which is not suffering from the same illness. Although the layout possibilities are limited for this widget, it has some nice features which I will try to explain in this post. And we will be ecological again, by reusing variables. This widget is not enhanced, it is not possible to control the choice, the associated variables by advanced actions. That is the reason why Retaking is not possible.
 

Example

 
Play with this small SWF to see a worked out example with 3 question slides: two Fill-in-the-Blank and one matching question. Each question slide has one Listbox widget, used in a different way:
  1. to enter 2 answers at once (use CTRL to select the second item) - I provided partial scoring, 5points for each correct answer
  2. to enter 1 answer, score 5 points
  3. same widget is used for 2 choices and multiple answers possible - only correct/incorrect possible with a score of 15points

Listbox widget - functionalities

The Properties dialog box has not a lot of configuration possibilities as you can see: in the upper field you can type the items for the rolldown list, and the second field is meant for variables. No formatting whatsoever: not for the fonts, not for the colors of fill/border. And as for most widgets, no Help available.

What is the meaning of those variables? After some exploration, can offer you these tips:
  • Similar to other widgets, you have to create those user variables separately (see Using Captivate Widgets - some tips)
  • The variables will store the chosen answer in the sequence they are chosen; you only need variables for the possible correct answers; in the example two answers were correct, so I defined two variables; the first answer chosen by the user will be stored in v_one, the second in v_two.
  • Contrary to other widgets, you can have spaces after the commas for the field with items, the space will be considered however as a first character; for the variables avoid those spaces
  • To make the font bigger, increase the size of the widget. It is a bit of trial and error to find a font that corresponds with other text. Do not worry about keeping the width/height ratio, the font will always keep a correct aspect. The widget bounding box is a lot bigger than the dropdown list itself, as you can see on this screenshot. Once I figured out the proper size, I used the size mentioned in the Transform accordion to change all the widgets to the same size.

Reusing variables
Eating my own dog food (see Be a Captivate Ecologist: reuse Variables) I defined these user variables:
  • v_one, v_two, v_three to be (re-)used as associated variables in the Listbox Widgets on the question slides (used 2 on first questin, 1 on the second and 3 on the last)
  • v_correct1, v_correct2, v_correct3 which will get the correct values on entering question slides 1/2 or based on choice for question slide 3; those are reused variables as well
  • v_q1, v_q2, v_q3 are not reused, but will get the string 'Correct', 'Partially correct' or 'Wrong' for the question slides depending on the user's answer
  • v_region is used on the third question slide, to store the choice for 'Flanders' (value = 1) or 'Wallonia' (value = 2)
  • v_score, v_percent will store the score and percentage to be showed on the score slide.

Advanced actions

First Question Slide:

EnterQuest1: standard action triggered on entering the slide
will assign the correct answers to v_correct1 and v_correct2. This is not necessary for the second question slide where I used a simple action (in the Action accordion) to assign the correct answer to v_correct1. On question slide 3 the assignment will be done with the actions triggered by the click boxes over 'Flanders' and 'Wallonia'.
 
BtSubmit1: conditional action triggered by the button Submit
This action has 4 decisions:
  1. Failure: is a mimicked standard action, will always be true but overridden for partial or correct answers by the subsequent decisions (see screenshot in Gallery); it will show the Next button (initially invisible), Failure1 Text Caption and puts 'Wrong' in the user variable v_q1;
  2. Partial: checks if at least one answer is correct, with an OR combination (see screenshot); it shows Next button, Partial Text Caption, hides the Failure1 caption, adds 5 points to the score and puts 'Partially correct' in the user variable v_q1. If the answer is totally correct, this condition is also true and statements will be executed, but part of them will be overridden by one of the Success decisions. The Next button that was made visible by the Failure statements, will remain visible.
  3. Success1: because the correct answers have no imposed sequence, we need two success decisions (second has v_one and v_two interchanged). This action (see screenshot) checks if both answers are correct, shows the Correct Text Caption, hides the Partial Text Caption, adds another 5points to the score (combined with the previous 5 = 10 points), and puts 'Correct' in the user variable v_q1.
  4. Success2: similar to previous, just switch v_one and v_two in the condition.

Second Question Slide:

This slide has a simple action on Enter to assign the correct value to v_correct1.
 
BtSubmit2: conditional advanced action triggered by the button Submit
This action has 1 THEN - ELSE decision, checks if v_one is equal to v_correct1; think you can figure out what it is doing, similar to the previous Submit action.
 

Third Question Slide:

On this slide, the texts Flanders and Wallonia are covered up with click boxes CB_Flanders and CB_Wallonia. Both trigger a standard advanced action (with same name, which is possible if you have labeled the click boxes first). You have a screenshot of the Flanders action in the Gallery, it is really self-explanatory: assigns the correct values to v_one, v_two, v_three variables, populates v_region, hides the text caption Wallonia and makes the initially invisible Widget visible. For the Wallonia action, an extra statement applies a custom motion effect.
 
BtSubmit3: conditional advanced action triggered by the button Submit.
This action has 7 decisions:
  1. Failure: is a mimicked standard action, totally similar to the one in btSubmit3; it will be overridden by one of the subsequent decisions if the answer is totally correct
  2. till 7. Success1..... Success6: for the same reason I needed to have 2 Success decisions for BtSubmit1, since now 3 items are correct there are 1x2x3 = 6 possible combinations, hence 6 decisions. One of them, Success4 has a screenshot in the Gallery. It is similar to the Success decisions for the first question slide.

Score slide

EnterScore: triggered on entering the slide, to calculate the percentage (see screenshot).
 

Conclusion

Sincerely regret that I couldn't do a comparison with the dropdown and combobox widgets because ot the issues I mentioned. They have better formatting options, but no possibility to select more than one item as I could use with the Listbox widget. And I also regret not to be able to control the content of the variables with an advanced action.
 
Hoping that this new example of reusing variables and of the way conditional actions are executed linearly are useful for someone.


Be a Captivate Ecologist: reuse variables!

Intro

In a former blog post I explained my work flow when preparing advanced actions for a Captivate project: Look Before you Leap. I inserted an explanation of this work flow in the DevLearn presentation as well, and offered a worksheet.
One of the steps is the choice of user variables, and the way you can save a lot of time later on by this choice, more specifically when trying to reuse variables. On the user forums I do see that often users just create variables on the fly and end up with so many variables that they are difficult to manage and cause a lot of unnecessary editing work. I was happy to get a rather simple use case by which I can explain this step another time.
 
Another user, an Emergency Nurse Educator inspired me for this use case, with this question:
"I have developed an MCQ captivate project that presents the emergency nurse with randomised scenarios of patients that they have to assign the correct level of urgency.  The levels of urgency are 1 through to 5, were 1 is the most urgent and 5 the least.  Captivate produces an accuracy %, but I would also like the percentage of over or under assignment of urgency category."

The user provided me with a small example with 3 MCQ slides and allowed me to publish this file here ... on the condition that I offered a solution of course.

 

Example SWF

Play this SWF to see the result. On the score slide the number of incorrect answers that were too high or too low. It is not a percentage - for 3 slides it is a bit ridiculous - but calculating the percentage as well is possible of course.

 

Variables - actions & triggers

No one will doubt that at least one counter is needed, which will be incremented with each incorrect answer. Although I could achieve it with one counter, found it easier to create two:

  • v_low  will store the number of incorrect answers that were under assignment of urgency category
  • v_high  will store the number of incorrect answers that were under assignment of urgency category
If you want to try it with one counter, you'll use the system variables cpQuizInfoTotalCorrectAnswers and cpQuizInfoTotalQuestionsPerProject together with the single counter to calculate the inverse counter. Bit cumbersome, not?
 
To check the answer I have to compare the given answer with the correct answer. The given answer is stored in the system variable cpQuizInfoAnswerChoice. The value will be the 'numbering' of the answer. This means in the default setting assumed here, where answers are indicated by characters A, B, C, D, E it is the character that will be stored. This is great news, because operators like 'is greater then' can be used to check if the answer was 'higher' than the correct one.
 
As I explained in the  DevLearn Presentation you have two possible actions on exiting a question slide:
  1. one that will be executed after a correct answer; in this case this can be left at Continue or eventually Go to Next Slide
  2. one that will be done after last attempt (on question level) for a wrong answer, which we will have to turn into an advanced conditional action
Since the wrong answers can only be too high or too low, this advanced action can be limited to one decision:
  • either the answer was too high, then the v_high counter has to be incremented, will be the THEN part
  • or it was too low and the v_low counter increments, the ELSE part
The most annoying work when using advanced actions is to duplicate and edit similar actions, because of the need to point to a unique ID. In this use case: the correct answer is different on each Question. At first sight I couldI create the advanced action for the first question slide this way:
IF cpQuizInfoAnswerChoice is greater than B       (B is the correct answer)
THEN   Expression  v_high = v_high + 1
ELSE    Expression v_low = v_low + 1
In that case I have to create a similar advanced action for each Question slide, in which I have to change the correct answer indicator. To avoid this cumbersome work, I created a reusable variable v_correct. This variable will get the correct answer indicator (B for the first question slide) on entering that slide, by a simple Assign action.
 
And the advanced action will be changed to:
IF cpQuizInfoAnswerChoice is greater than v_correct
THEN   Expression  v_high = v_high + 1
ELSE    Expression v_low = v_low + 1 
And this unique advanced action can now be used on any question slide!
 
 

More tips to save time

I would recommend creating a template with one question slide and the score slide. The question slide can have a regular question instead of a placeholder. Attach both the assignment action (on Enter) and the advanced action (After last attempt) to this question slide.

When using this template: duplicate the question slide as many times as needed. They will all have the same Text Captions, that you can export, edit and import again to change the question texts. In Captivate indicate the correct answer, and at the same time assign the correct answer indicator in the Properties panel for the slide, On Enter.
 

 

Using Captivate Widgets? Some tips

Intro

Captivate comes with several widgets that you can use freely. Some of those widgets are really easy to use and to configure, but I have to confess that sometimes I had to curse quite a while before discovering some functionalities of the Widget Properties dialog box. Because there is no explanation available at all. This small article is meant to offer you some tips and warnings. Some of those tips have already appeared in other postings, where I used widgets.

General tips

Duplicating widgets

Some widgets do need a lot of editing (formatting), but if the widget has an associated variable do not copy it to save time, because the copies mostly will cause issues.

Multiple widgets on one slide

You can use multiple widgets on one slide, but be careful when stacking interactive widgets that are in the same location on the slide! This can lead to unpredictable results, same as with interactive objects on the same place. 

Interactive widgets

Those widgets can have a score (eventually to be reported to a LMS) and perform actions on Success and on Failure like other interactive objects (button, TEB, Click box).  They will appear in the Advanced Interaction view (F9). Of course that is also the case for the Question widgets (only one available in the Captivate box).

Master slides and widgets

You can only add static widgets to master slides, no interactive nor question widgets. The static button widget can be very useful on master slides until it will be possible to add regular buttons.

Specific tips

Widgets with associated user variables

 Several widgets have associated user variables, which can be used later on to display in Text Captions, or in advanced actions. Examples are CheckBoxes, DropDown, RadioButtons, TextArea, Timer... 
  • You have to create those user variables separately, using the Project, Variables dialog box; and like all variables they are case sensitive
  • If you have to enter more than one variable in the Properties (ListBox, ComboBox, DropDown,..) they have to be separated by commas but you do not enter a space before/after the comma or only the first variable will be accepted
  • If you have to enter more than one value, same rule: no spaces after or before the comma separator

Preview area

To me this is a misleading name because I expect such an area to be read-only which is not the case: for some widgets you have to edit in this preview area! Some examples, just to push you at exploring that Preview area in case you want to change something that is not available elsewhere in the Properties Dialog box:

  • ArrowWidget: you can use the preview area to resize the arrow and to move the text
     
  • StaticButton: use the Preview area to resize the button, and to make place for more letters in the Text. Be careful with the text resizing: if you resize using the corner handles or the handles on the horizontal borders you'll resize the font as well, just use the handles on the vertical borders. 

  • If you want to use a customized image, it will by default be placed to the right side of the button.
    You have to cover up the button with that image if you only want the image to be visible. Do not use transparency in the image and be sure to copy it to the folder where you will put the published file. Moreover this image will be not visible when previewing, only after publishing! 

I expected a similar behavior for the InteractiveButton widget as for the StaticButton. I do not remember ever using this button and checked it out. It seems to be buggy, the caption doesn't appear in the Properties dialog box, which makes it very difficult to adapt the size of the text. I'm not sure if this is also the case for other users, didn't read any question about this widget on the forums so far.

Question Question Slides - Part 2

Intro

A couple of weeks ago I tried to compile all the ideas about default Quiz functionalities and tweak possibilities in a blog post: Question Question Slides in Captivate.
From a recent thread on the user forum (Quiz Results Text Styling Problem), I concluded that something was missing: 'How to tweak the Review message on the Score slide?' There is an important bug in CP5.5 concerning that review message: it is limited to 'oneliners', you cannot put a long text in it, it will not wrap, you do not have a Format accordion in its Properties Panel neither.
Thanks, Miguel, for pointing out this gap that I will try to fill up now. If you did not know it yet, I have learned about everything concerning Captivate spending time on the user forums, questioning, answering and discussing.
This post will use the same example Quiz explained in this blog post about customizing the review messages on the Question slides: Customizing review messages. Whereas that post explained the work flow both for Captivate 5 and 5.5, here I will focus only on 5.5. However the work flow will be very similar for the previous version.
Update 6.1: in this version, only available for subscribers and ASA, finally the Review message will wrap.
 

Demo

Watch this sample SWF to see the result of the tweaking: if you compare with the previous version about Customizing review messages, you'll see that there is a Retake option (you have 1 attempt on Question level but 3 attempts on Quiz level) and that the review messages on the score slide are customized. The Review button is covered up by the Retake button (explained in the first part of Question Question slides), so it will only be visible when you have exhausted the attempts. I did not provide a review message for the question slides when you didn't answer the question (completely). Reason: you need to use the default Review area in that case. You can adapt the text style but not the caption style itself. It should be possible with more complicated advanced actions and user variables however, adding a third Text Caption and keeping track of non-answered questions.
 
 

Work Flow

Question Slides

I reused the work flow described in Customizing review messages
  • I created Text Captions OKx and NOKx for each question slide and set them initially to invisible
  • Created advanced actions Correctx and NotCorrectx to be triggered On Success/Last Attempt (Quiz Properties) that show the right text caption and jump to next slide, to avoid that the user sees this caption immediately
However, this time 3 attempts on Quiz level are available, the user can retake the quiz if he fails. During Retake he should not see the text captions (OKx, NOKx) that were set to be visible in the previous attempt. This is a new 'situation'. When entering a question slide a user can be in Retake or in Review situation, which means we'll need an advanced action to be triggered On Enter Slide. Retake only happens
  1. if the user has failed on a previous attempt (system variable cpQuizInfoPassFail will have the value=0) AND
  2. If the attempts are not exhausted
You will be tempted to use the system variable cpQuizInfoAttempts to track the number of attempts, but I couldn't find a proper solution using that var: it will be updated when an attempt starts. It will never be greater than the maximum allowed number of attempts, so I cannot use a condition like 'IF cpQuizInfoAttempts is greater than 3' to check if the attempts are exhausted. For this reason I created a user variable v_attempts that is incremented on entering the first question slide. Once this variable exceeds 3, I know that the user is in Review mode, not in Retake mode.
 
I created an advanced action EnterQx to be triggered on entering each question slide. It is a conditional action with two decisions for all question slides except the first one. For the first question slide there is first a mimicked standard action as a first decision. You'll find all decisions for the first question slide in the Gallery:
  • Decision Increment
  • Decision Retaking? checks if atttempts are not exhausted and user has failed in previous attempts and in that case hides the text captions
  • Decision Reviewing? checks if the user has Passed OR has exhausted his attempts and in that case just continues, which means that the correct text caption remains visible

Score Slide

To have a customized Review message, I cleared the default Review Messages, but left the placeholder object partially on the stage (made it really small).
I created three Text Captions: SuccessScore, FailScore, ReviewScore, set initially to invisible.
Review and Retake button were aligned with the option 'Align and resize to the same size', which results in the Review button being covered by the Retake button until the allowed attempts on Quiz level are exhausted.
On Entering the Score slide an advanced action EntScore is triggered (see Gallery). This action is conditional and has 3 decisions:
  • Decision Passed: checking cpQuizInfoPassFail will show Text Caption SuccessScore; the Review button will appear automatically (functionality of Quiz)
  • Decision Retake?: checking both cpQuizInfoPassFail and cpQuizInfoAttempts to show the Text Caption FailScore
  • Decision Review?: to show the Text Caption ReviewScore if user failed and exhausted attempts

Other gaps?

Please, post a comment if you are finding other gaps in my Question slides overview!
 

 

Presentation DevLearn 2011

Exactly two weeks ago I enjoyed presenting a session at DevLearn 2011 about Advanced actions in Adobe Captivate with Vish (Viswanath Shivaswamy). I promised to publish the presentation for those who were not able to attend. As you all know, a lot of work is waiting when you return from a conference, so it took me a while to adapt the presentation and to add voice overs. Today I'm happy to be able to publish at last. Just hope that you will be patient while the pretty big file (15MB) is downloading. In the near future I will try to rescale and adapt for publishing on YouTube as well, in different movies.
 
I included a Table of Content in Overlay where you can navigate to your wish. In the real session we also gave some demonstrations in Captivate itself, but I had to leave those out of the SWF.  Please, hope you will post some comments.
 

Gaming in Las Vegas - DevLearn 2011

Intro

If you have been visiting this blog recently, you already know that I'm very excited to be presenting  a session at DevLean about Advanced Actions  in Captivate 5/5.5 with Viswanath Shivaswamy (Unleash Adobe Captivate's Full Power). Since this conference is situated in Las Vegas it seems appropriate to have a Game as use case. For attendees, not only those who will be there but also those following the Backchannel with David Kelly as experienced backchannel curator (DevLearn BackChannel) this blog post offers a preview of the game. Have fun...

Game

In this game you'll have to find what is on an image (choice of 2 images in this example) by disclosing parts of the image (4 in this simple case). To disclose such a part you'll have to answer a question correctly, which will then be translated in a score of 5pts. After each correct answer you'll get the opportunity to guess the content of the image. This will also result in a score. The points earned by the guess depend on the number of parts that were made visible: 50pts if only one part disclosed, 35pts for 2 parts, 20pts for 3 parts and 5pts whan all parts are visible.

Sorry, it is a pretty large file (5MB) so you'll have to be patient when loading.

 

Waiting

By means of this game we will try to explain a practical work flow to start with this kind of more complex projects. Of course introduction to the basics of Advanced actions, more concise examples, tips and tricks will be offered as well. And we hope on a lot of interactivity, questions from the attendees (real or distant). 'See' you there at LV!

One of the questions that will certainly raise is: can we report this kind of score to a LMS.  I know, the last blog post about reporting partial scores, or adapted scores as in this game, is not yet published but... wait a little bit more. With the assistance of friends from the Captivate Community we will be able to offer you even two solutions: one using JavaScript, and another one using the amazing new Interactive Master Widget of InfoSemantics.

 

Update

Uploaded a new version of the published game, already learned something and DevLearn didn't even start. Two changes:

Connie Malamed suggested on Twitter that I should change the background of the radiobuttons answers to have more contrast. And she learned from me that 'Danmark' is not mis-spelled, it is just the original name of this country (not Anglicized to Denmark).

Found by accident that something went wrong when one clicked twice the same card, weird that no user has detected that. This has been corrected, using one of my favourite user variables, v_void. Ready for DevLearn now.

Question Question Slides in Captivate

Unleash Adobe Captivate's Full Power with Advanced Actions

Intro

You know from this blog that it is possible to create your own question slides, using standard objects and advanced actions. That allows you to have functionalities like partial scoring, selective Retake, two quizzes in one file, etc. On the user forums I see a lot of questions concerning the default question slides, and in this post will try to list some tips about using those  'normal' questions. if you understand their functioning well, you'll be able to tweak them and perhaps avoid to invest a lot of time in creating custom questions. Beware: this will not allow you to realize quizzes with partial scoring etc! In a previous post: Customizing Review Messages I explained some of the work flows repeated here, but so many questions about this subject appear on the user forum, I thought it to be useful to have a general article that summarizes both default work flow for questions/quiz and possible ways to tweak them.
 
Watch this movie, where you can see some tweaking applied to.
 

What is typical for Question slides?

  • Only one Timeline with pausing point is available: no separate timelines for the different objects, no timing possible
  • Most Question Objects have their proper Object Style (missing are the ....
  • You can move the pausing point visible in the timeline manually, but its timing is not available in the Properties panel
  • Default objects on Question slides are always on top (see also Other Buttons)
  • Whereas you can add non-interactive objects, it is impossible to add interactive objects; one big exception is the hybrid Static button widget
  • You can use the slide event On Enter to trigger an (advanced) action, but the Exit event is not available (really replaced by Success/Failure events)

Analyzing Default Work flow

Start Settings

  1. Two attempts on Question level, two attempts on Quiz level
  2. All captions are visible: Correct, Incomplete (check Options in Quiz Properties), Retry Message (Action Accordion in Quiz Properties) and Incorrect (not available in Options)
  3. All buttons remain visible: Clear, (Back), Skip (Options in Quiz Properties), Submit
  4. Retake and Review allowed as well as Backwards navigation (if not, the Back button would have been contradictory)

Process on Question Level

First step
  • User answers a question, clicks Submit button; the pausing point of this button is the one you see on the timeline, slide level
  •   The conditional action executed as a result of clicking that button:
    • pops up Correct/Incomplete/Incorrect/Retry caption, depending on the answer (conditional action)
    • the message to press Y or click on the slide to proceed is included in the Correct/Incorrect; 
    • slide pauses, will not proceed beyond the pausing point; user can watch the captions as long as he wants  
Second step
  • User presses Y or clicks on the slide; see this as a click box all over the slide with a shortcut key=Y: its pausing point is the same as for the Submit button.
  • The conditional action executed as a result of this user event:
    • if answer was Incorrect and attempts not exhausted: Incorrect caption disappears, playhead remains paused, user can change his answer
    • if answer was Incorrect and attempts are exhausted: Incorrect caption disappears, action specified in Action accordion of Quiz Properties panel 'Last Attempt' is executed and the playhead moves on
    • if answer was Correct: Correct caption disappears, action specified Action accordion of Quiz Properties panel 'On Success' is executed and the playhead moves on
Other Buttons
  1. Back: If you allow Backwards navigation, you have to know that the answer given on a previous slide cannot be changed by the user if he comes back to that slide, his answer is blocked, the Clear button will not be active either. It is only sort of a Review option of that slide. Personally I will never allow backwards movement and this is one of the reasons. If you agree with me, do not try to delete the Back buttons on the slides because they can reappear miraculously, but uncheck the option "Allow Backward Movement" in Quiz, Settings.
  2.  Clear: will allow the user to clear his answer, as long as he remains on the slides and did not submit his answer
  3.  Skip: doubles up as real Skip during answering questions and as Next during Review which can be a bit confusing
 
All objects on the questions slides have top priority, and this is the sequence of the stack:
  • top most is Back button
  • Clear button just under the Back
  • Skip under Clear
  • Submit is the bottom object
Because of this priority you cannot cover a button with another object. Possible however is:
  • to make a button invisible to the user: delete its text and make the button transparent
  • moving buttons, for putting one on top of the other (depends on sequence just described) or put them where the user will probably not click
 

Process on Quiz Level

Retake/Review
Both buttons are available on the Score slide (see Tweak Possibilities) which can confuse the user because:
  • he is supposed to click Retake if he wants another attempt: this button will disappear automatically when attempts are exhausted
  • if he clicks Review before exhausting attempts, all remaining attempts will be lost
Choosing the Retake button will clear all answers in the quiz, correct and incorrect as well. The total score is reset to 0. 

The action triggered by the Continue button on the Score slide depends on the Pass/Fail status of the Quiz. Default actions are Continue for both Pass and Fail. Those actions can be changed in the Quiz Preferences, Pass/Fail as you can see in this image. The whole list of actions are availabe, you can jump to different slides, open a URL/file/project, execute advanced actions etc.

Quiz Scope
The quiz scope is a range of slides where the Quiz is 'active'. This scope starts with the first slide that has a scored object, which can be a question slide but also a slide with a scored interactive object. The scope ends with the score slide, or if you do not have a score slide, with the last scored object. Whenever the user gets out of that scope, the attempt is considered as finished if multiple attempts are allowed. Getting back into the Quiz scope will then not allow to continue the attempt. This jumping out of the quiz scope can cause issues if you are choosing one of the strict Required options in the Quiz Preferences like Pass required. 
  
 

Some Tweak possibilities

On Question level

Replacing the 'Press Y or click on the slide' by a 'Next button'
OK, I do know that you cannot add a button, which is an interactive object, to any question slide. But since this step is in reality triggered by a click box that covers up the whole slide, any object that looks like a button (image, rectangle) will cheat the user to click on it, and he is just triggering the Success action of the click box. 

 
Skipping first step of the two step process without captions
If you think it annoying that the user has to enter his answer in two steps, and you do not want to show the Correct/Incorrect text captions, just delete them. For the correct caption this can be done using the Quiz Properties panel, Options accordion. The Incorrect caption has to be deleted on the slide. In that case the first step is skipped completely: when the user clicks on the Submit button and it has been the last attempt, the Success or Failure action specified in the Quiz Properties, Actions panel are executed immediately. If you change those actions from 'Continue' to 'Go to Next Slide', the user will get immediately to the next slide. When allowing multiple attempts on question level, it is perhaps better to keep the 'Retry message' to avoid that user is just waiting, because nothing will happen. I illustrated this work flow on the first Multiple Choice question in the example: when clicking Submit, only caption that will appear is 'Retry' as long as attempts are not exhausted. When attempts are exhausted, navigation is immediately to the next slide.

Skipping first step of the two step process and showing captions and/or offer audio feedback
Little bit trickier, because you'll have to create simple advanced actions. Start by deleting all the default captions as in the previous solution. Prepare your own feedback objects:
  • either text captions for correct/incorrect eventually with audio clip attached, and set them to invisible
  • either 'invisible objects' like a rectangle without a stroke and with a fill that is Alpha=0% and attach the audio feedback (correct/incorrect) to those objects; set the objects to invisible
Create two advanced actions, one to be triggered as Success action (Quiz Properties, Actions), second to be triggered After Last attempt (same place). 
  1. Show the appropriate object (either Text Caption or object with audio attached)
  2. Hide the opposite object
In this case the playhead will continue on the timeline. Be sure to move the pausing point of the slide so that time left after the pausing point is sufficient to read the captions or to listen to the audio feedback. If you want to offer the user a Next button, to continue before the playhead has reached the end of the timeline, you can use this workaround (illustrated in the second question of the example - advanced actions are in the Image Gallery, MCQCorrect and MCQWrong):
  • add the Skip button, but make it invisible to the user (no text, transparent); this Skip button by default jumps to the next slide, it will remain active but invisible
  • on top of the Skip button add a rectangle with the text Next; this is possible because it is a static object; make it invisible in its Properties panel
  • to the advanced actions described before, add a third statement that shows the rectangle
In that case you can add the static button widget that has navigational actions like 'Go to Next Slide' in its functionality list. You can even hide that button widget and show it with the Success/Last Attempt actions as well. The third question uses that approach. No need to extend the slide duration in this case. You'll have to use the static button widget with pause, CP5.5 users can download this widget from my blog: What I (dis)like in CP5.5

If you allow multiple Quiz attempts (Retake) and/or Review, you have to hide the custom text captions, fake button/button widget whenever the user reenters the slide. In the Image Gallery you'll see one of those actions 'EnterMCQ', triggered on entering the second Question slide (MCQ)
 

On Quiz level

Hiding the Review button until attempts are exhausted
Drag the Retake button on top of the Review button on the stage. This is possible because the Retake button is higher in the timeline stack of the Question slides. User will not see the Review button until he has exhausted the attempts. At that moment the Retake button is hidden automatically and the Review button gets visible. This functionality is used in the example movie.

Changing Skip button to Next button during Review
The same approach as for the Next button during answering could be used, but in this case you'll need to track if the user in in the Review situation: either he has exhausted the attempts and Failed, or he passed in one of the attempts. So we'll need an advanced conditional action to check that. In the example movie I did not use this approach but hide the playbar during the quiz by a simple action 'Assign cpCmndShowPlaybar with 0' on entering the first slide (instruction slide). The playbar will be set to visible when entering Review mode with this work flow:
  1. on entering the score slide I increment a user variable v_counter with the advanced action EnterScore (see image in Gallery)
  2. on entering the first Question slide I trigger an advanced action EnterFirst: since Review situation can happen either after two different situations I had to use a combined OR condition to turn on the playbar when Review status is reached (see image in Gallery)
In previous articles I explained how to customize the Progress indicator and how to customize Review messages.

Concentration Game - created exclusively with Captivate

Update:

A new version of this game, taking advantage of more recent features and published to HTML5, can be found in this blog:

Memory game (shared action)

Intro

Another challenge popped up on the user forum:
"I am trying to recreate the Classic Concentration game. Does any one have any ideas how I would do this in Captivate?"
You can read the full thread here: How would I create the Classic Concentration Game?

And I tried to realise this exclusively with Captivate functionalities: no widgets, no ActionScript. There are of course limited functionalities as I will explain at the end. I have been using the possibilities of hiding/showing objects a lot in this example. For this reason I recommend reading a previous post about this subject: 

In this blog post you'll find the global concept of the sample movie. Later on I will publish a companion article that will explain the advanced actions in depth.

Example movie

Play with this SWF to get the feeling of the game. Only two games are available but the number of images can easily be extended without too much trouble. Have fun.
 

Work Flow

You'll find here the same subjects I explained in my previous post Look before you leap where I tried to give you a detailed view of my preparing brainstorming; the 'Leap' portion (construction of the advanced actions) will be treated in the article:

Situations - Slides - Events

Here are the situations that can occur in the game:
  1. Choice of a challenge: either Europe or North America will have consequences later on, so I'll need a variable
  2. Clicking a first card, content of card will be showed, has to be remembered (by user and by the game), so I'll need a variable
  3. Clicking second card, content will be showed and remembered (variable)
  4. Game has to compare the content of both cards (duo): correct/incorrect will have different consequences/branching
    1. correct: cards are removed (image visible based on choice), game has to remember this 'duo' was correct, next action of user 
    2. incorrect: cards are again turned, next action of user
  5. User can choose to guess: answer can be correct/incorrect
    1. correct: congratulations, game ended
    2. incorrect: next action of user

This game has only 5 slides (see also Advanced Interaction View in Gallery),and you can check the timeline of the slides in the Gallery images:
  1. Intro: is the welcome screen, where the user can choose between North America and Europe (for the hidden image) using two buttons. This slide is reused, after a wrong guess of the user (situation 5) he is navigated again to this slide (hence two text captions).

  2. Game: is the most complex slide, with tons of objects, and most objects are timed 'For rest of project' which leaves them with one unique ID; the click boxes on the 'cards' are triggering advanced actions that will show the cards, and there is a Guess button that navigates to slide 4. This slide will be explained more in detail later on.

  3. Second: to have more events for triggering actions I used this second Game slide that will appear after the user has chosen two cards to reveal and with the timing 'For rest of project' it has the same game objects; the user will be able to read the Success/Failure captions, and proceed with a Next button which returns him to the second slide Game.

  4. Guess: when the user has clicked the Guess button on slide 2, this slide is presented; it has the same game objects as on the two previous slides, and a Text Entry Box that will be validated. If the answer is correct, navigation is to the last slide, if it is wrong, navigation is to slide 1 Intro.

  5. End: shows the image totally even if not all cards have been removed, a relevant text caption depending on the image and a Text animation; this slide will only be reached when the user has guessed the answer correctly.
Events used to trigger actions, slide and object events:
  • Enter of first slide Intro to show/hide buttons and Text Captions: advanced action EnterIntro
  • Buttons on slide Intro (Europe/North America): advanced actions Bt_EU Bt_NA
  • Button 'Next' on slide Intro (only visible on second visit) triggers simple navigation to next slide
  • Enter of second slide Game: advanced action EnterGame
  • Click boxes (12) on slide Game: advanced actions CB_11, CB_12.... CB_34   (location in label: 34 = 3rd line, 4th position)
  • Button 'Guess' on slide Game triggers a simple navigation action to slide 4 
  • Enter of third slide Second: advanced action CheckSecond
  • Button 'Next' on slide Second is set to Continue, because exceptionally I used the next event (Exit) and have to be sure the playhead reaches the last frame
  • Exit of third slide Second: advanced action ExitSecond
  • TEB on fourth slide Guess navigates to slide 5 End if validation is correct, to slide 1 Intro if it is incorrect
  • Enter of last slide End: advanced action EnterEnd

Variables

  • v_void: empty variable to check if variable v_one is empty
  • v_choice: to store the choice of Europe (E) or North-America (A)
  • v_current: very important variable to save time when editing, it will store the content of the last chosen card (AE, DW, Fl, FW, ID or PR) 
  • v_one: stores the choice of the card if it is empty (first card of duo) by using the variable v_current
  • v_two: stores the choice of the card if v_one is not empty (second card of duo) by using the variable v_current
  • v_AE, v_DW, v_Fl, v_FW, v_ID, v_PR will get the value=1 if that duo was discovered
  • v_counter will increment by 1 with each new discovered duo; I didn't use it in this example, but could be used to have a different score at success depending on the number of duos that had been discovered before guessing the image
  • v_first: gets the value=1 after the first slide has been visited, because that slide is reused and has to show different objects on the subsequent visits.


Objects

The timelines in the Gallery provide information on the objects and are pretty simple for slides Intro, Guess and End. 

On slide Game you have a lot of objects (not all are visible in the Timeline image). The stacking order is here very important, as is the timing of those objects. And I really hope that next version of Cp will offer us the ability to group objects, to have them in collapsible folders on the Timeline. From bottom to top this slide has:
  • the two images to be discovered, one for North America, one for Europe; this could be extended to more choices or even more images from those two continents; images are set to display for 'Rest of Project', so when discovered (partially) this will show up in slides Second, Guess; on slide End they will be uncovered totally
  • for each card you'll find a trio of objects (highlighted for first card on the first row), for this example: 
    • PR1_Fr image of the content of the card (here the mnemonic for Premiere), needs to be the bottom one; I choose this label because it tells me about the content (first card with Premiere, Fr); this image is also timed for Rest of Project
    • PR1_Bk the 'back' of the card that is visible when the game starts (used a gradient for those, but you can of course use whatever image you want), timed for Rest of Project
    • CB_PR_11 click box over the card, that will trigger the advanced action CB_11; I used this longer label to be able both to identify the content and the place to make it easier to attach the advanced actions (and edit the duplicates)
  • Text Caption for the button Guess ("If you want to guess....")
  • Button Guess
On slide Second all the objects set to display for rest of project (from slide Game) will be visible as well as its proper objects:
  • Button Next, left to the default action 'Continue' 
  • Text Captions Correct/Incorrect: the proper caption will be visible based on the action On Enter for this slide; when exiting the slide both Text Captions will be hidden and user is returned to the previous slide Game

Actions

As mentioned before, I will not explain the actions in detail here (post would be too long), just the general idea of each action

EnterIntro
This action checks if the Intro slide has been visited already, if this is the case the choice buttons (North America/Europe) are replaced by the Next button, and the Welcome caption is replaced by the Sorry caption. After that check the user variable v_first is set to 1.

Bt_EU/Bt_NA
Action will populate the user variable v_choice and go to the next slide

EnterGame
Complex conditional action, that first resets the user variables v_one/v_second to empty (v_void). It will set the proper image to visible, based on the user variable v_choice. Then for each of the duos it will check if they have been discovered and display that situation (hiding the back and fore images of the cards to display that part of the image if duo was discovered), using the variables v_AE.....v_PR.

CB_11.... CB_34
Those actions will populate the user variable v_current and hide the back of the chosen card. Then either v_one or v_two will get the value stored in v_current, depending on the fact that it is the first or the second card.

CheckSecond
Action will compare the content of v_one and v_two to check if they are equal. If not, the incorrect caption will get invisible. For the correct duos this has to be checked for each possible duo (combined condition) because of the need to set the user variables v_AE....v_PR that are used for the action EnterGame. The correct caption will be visible, the appropriate user variable is set to 1 and v_counter will be incremented.

ExitSecond
Correct and Incorrect captions are hidden, navigation to the previous slide

EnterEnd
All cards are hidden (foreground and background), which will reveal the total image. The appropriate text caption relating to the image is made visible based on the user variable v_choice


Conclusion

Captivate is not Flash, and I'm perfectly aware that for this kind of games programming in ActionScript is better suited. I limited the number of cards to 12, but it can be extended to more cards and duos. More images to discover is easily possible as I explained before. But if you want to change the content of the cards, this will be a lot more work. It is possible to have a differentiated score depending on the number of duos that are displayed before trying/succeeding a guess. You can report easily the score to a LMS (attach it to the TEB on the fourth slide Guess) but if you want a differentiated score to report you'll get stuck like with other question slides (customized or not) because you cannot attach different scores to an interactive object based on a conditional action.


Anyway it was fun to try to create this simple game, it allowed me again to refer to the workflow and the hide/show functionalities that I explained in previous posts. Your comments are, as usual, very welcome.
 

Update

Yesterday eLearnDesigner posted a comment to tell me that she discovered a bug in the game: when a user clicks twice on the same card, it will be considered as a success and both parts of the image will be revealed. Thanks a lot!

Of course I had overlooked this possibility, and solved this by changing some actions:
  • CB11...CB24  here I added a statement to disable the click box that had just be clicked.
  • EnterGame both click boxes for the pair of cards were enabled again if there was no match.

 

Look before you Leap - in Advanced Actions

Intro

Allen Partridge in a comment on a post suggested that I should blog about the work flow, the logic when setting up advanced actions. I find this a very difficult subject for a blog post, much easier when teaching face to face or online teaching. But this new question on the forum, that I tried to work out is a fine example to give you some tips, about shortening developing time by sitting down a while to reflect about the situations you want to create. And you'll not believe it but I do sit down, take a pencil and paper at that moment, or start to scribble in Evernote if I can't find those venerable tools immediately.

I will not explain the advanced actions in detail (some screenshots in the Gallery), but focus on the work flow and offer some timesaver tips. 

Question

 "Is  there anyway of taking a  series of variable controlled numbers say 0-9  that have been punched into a keypad, and formatting them so that the  ones that are clicked on the keypad are displayed in sequence. E.g.  if you click 1,5,8 and 9 on the keypad, then in the next slide I want  1,5,8 and 9 to be displayed as the keypad code so to speak." The complete thread can be found here: Push button lock theory
Those of you who visit the Captivate user forums frequently, will not be astonished that I asked more questions to have a clear idea about the goal. And the user kindly provided me with the image of that push lock. So I got these details:
  • the user chooses the code
  • the lock has 13 possible digits: numbers 0-9 and letters X,Y,Z
  • a C-button allows the user to reset the total code
  • the code has 5 digits
  • the code must not be validated but only shown on the next slide, and navigation to that slide is by a button Next

Example

Have a look at this movie to understand better what I tried to achieve. It has only 3 slides: Intro, EnterCode and ShowCode.


Look before...


For this particular (simple) use case, what did I write down? And you'll see that I mostly define labels for everything as well.

Situations - slides - events

Which situations will be possible and will I solve this in one slide or in multiple slides?
  1. User 'pushes' one of the buttons to enter a digit: which means I'll have 13 events that can trigger an action - all those actions will be similar
  2. User wants to change the code and clicks the C-button: event that is different from the 13 previous ones
  3. User has entered 5 digits and tries to push another button: has to be taken care off for each of the 13 actions described in 1.
  4. User clicks Next to confirm his code: special event, which will cause navigation IF the user has entered exactly 5 digits
  5. User clicks Next but has not entered 5 digits: should be taken care off, no navigation in that case
In this case I decided to have only one slide EnterCode with all the events/actions and a second slide ShowCode to navigate to with the Next button (situation 4).
There are 15 events to trigger actions by interactive objects:
  • 13 click boxes, each covering up a digit (0-9 and X,Y,Z), decided to label them as CB_0, CB_1..... CB_X, CB_Y, CB_Z
  • 1 click box covering the C-button CB_C
  • 1 button But_Next
If I want to make it possible to restart the process of entering the code on the slide EnterCode it is a good idea to use the event 'On Enter' for this slide to re-initialise everything.

Variables

Mostly I make a list of the variables I will need and create them separately from the advanced actions. This is only a personal preference, I do see a lot of tutorials where the possibility to open the Variables dialog box from the Advanced Actions box is used to create variables on the fly.
  • Since the goal is to show the entered code in ShowSlide I need 5 variables that will store the entered digits. This seems logical, but I did see that the user started by creating one variable for each digit? I suspect this is the result of just starting right away in Captivate before reflecting on the goal :-). Those five variables will be used on the second slide to show the code in a Text Caption. 
    Variables will be labeled: v_one, v_two, v_three, v_four, v_five

  • To use the C-button to reset the code, I'll need my favourite variable that is totally empty:
    v_void

  • To track the number of entered digits for situations 3-5 I need a counter:
    v_counter

  • The last variable I didn't add immediately, but saved me a lot of editing time when creating the 13 similar advanced actions for the click boxes (see Actions).
    v_current will store the digit of the current Click box (1 if the user clicked on the 1, X if he clicked on X..); and for all those genius-programmers here I really appreciate the fact that the Advanced Actions do not request me to make a difference between a number and a string when defining a variable  :-)

Objects

On the slide EnterCode, with the image of the push lock, I'll need (see Timeline in Gallery):
  • 13 click boxes on the 13 digits: do not create them all at once! Create one click box, configure it (inc. the attached advanced actions), and test it thoroughly. Only after that process duplicate it as many times as you need (and use my shortcut keys for aligning without a mouse Moving and Resizing Objects); believe me: that will save you a lot of clicks.
  • 1 click box over the C-button
  • 1 button Next
  • Text Caption Instruction explaining how to enter and confirm the code
  • Text Caption Warning to show up when the user enters more than 5 digits (in the same location as the previous caption)
  • Text Caption TooLess to show up when the user tries to confirm with the Next button and didn't enter 5 digits, also in the same location; in this text caption the user variable v_counter is embedded
On the slide ShowCode there is only a text caption to show the code. Beware: when embedding the user variables v_one....v_five be sure to set the length of each variable to 1 and no spaces between the variables in order to show the code as a sequence.

$$v_one$$$$v_two$$$$v_three$$$$v_four$$$$v_five$$

Actions

Tip: you can use the same label for an advanced action as the label for the object it is attached to, provided that you first label the object! If you try to label the object after you attributed the same label to an advanced action you'll get an error message! I forgot about this for the button Next, that is why you'll see there a different label for the action and the button, because I labeled the button after creating the action.

CB_1  and similar actions triggered by click box with same label (screenshots in Gallery)

Will need a combination of a standard action and a conditional action with multiple decisions:
  • increment v_counter and store the digit (1 for CB_1) in v_current (standard action) in decision Counter
  • store the digit in the appropriate variable v_one, v_two...., v_five  (conditional with 5 decisions First, Second, Third, Fourth, Fifth)
  • checks if the user didn't enter more than 5 digits, decision TooMuch
CB_Reset  (triggered by click box CB_C and eventually on Entering the slide EnterCode)
This is a standard action (see Gallery)
  • resets v_counter to 0
  • clears the variables v_one....v_five by using the variable v_void
  • shows text caption Instruction (that could have been made invisible by a previous advanced action)
  • hides text captions Warning and TooLess (that could have been made visible by a previous advanced action)
Bt_Next (triggered by button But_Next)
This is a conditional action, one decision with a Then/Next section (see Gallery)
  • checks if v_counter
  • if Yes the text caption Instruction is hidden and TooLess is made visible
  • if No the user is navigated to the next slide ShowCode

...you Leap


My work flow (had 2 slides with background and image on first slide), sequential:
  • created all the user variables and added comment to each variable
  • created click box CB_1, CB_C, button But_Next
  • created text caption Instruction and formatted it, used Duplicate to create captions Warning and TooLess on slide EnterCode
  • created text caption on slide ShowCode with the embedded variables (set each to length 1)
  • added a testing Text Caption on first slide that shows the variables v_counter, v_current, v_one......v_five;  it helps when testing to see those variables change in real time; this caption will be deleted later on
  • created advanced action CB_1 from Properties panel for click box CB_1: started with first 2 decisions (Counter and First), tested, then added decisions Second...Fifth, at last added TooMuch; here it was possible to test everything because the user can select the code "11111".
  • created advanced action CB_Reset from Properties panel click box CB_C and tested it in combination with CB_1
  • attached this action CB_Reset also to 'On Enter' for the slide EnterCode
  • created advanced action Bt_Next from Properties panel for button But_Next and tested it (still with only 1 as possible digit)
The following steps are the tedious, annoying ones because all the creative work is done. That is why often bugs will enter in this process, perhaps my tips will help to avoid some:
  1. duplicate click box CB_1 as many times as needed (here 12), label and position each click box over the appropriate digit
  2. open Advanced actions dialog box; duplicate action CB_1, change the label to CB_2
  3. because I used the variable v_current you only have to edit the first decision (Counter): change the statement "Assign v_current with 1" to "Assign v_current with 2" and that is it
  4. repeat that process (2-3) to create all the advanced actions CB_3....CB_Z; close Advanced Actions
  5. in the properties panel of the click boxes, change the attached action: because labels of the click box and the action are the same this would be easy.
  6. test again in all situations to detect possible bugs

Conclusion

This is the first time I tried to explain the way my 'advanced actions' brain is tackling the process, and I do not have any idea if this could help. That is why I really would appreciate if you take a minute to post your comment and suggestions. What do you think about a YouTube video to show how the extra user variable v_current did save me a lot of time while editing the similar duplicate actions for the 13 buttons.