Playing "Hide-and-seek" with Captivate objects

This article was written for version 5. At that moment it was not possible to show an object, timed for the rest of the project, from another slide than the original slide where it was inserted. However this has changed for later versions: in 7, 8, 9 and later you can show an object timed for the rest of the project from any slide.


Hide/Show actions, attached to events like entering slides or clicking a button/click box are popular. They can also be used in Advanced actions. But from several questions on the user forums I concluded that there is some confusion about what is really possible and impossible with those 'simple' actions. So, thanks folks for giving me the inspiration for this blog posting! If combined with the timing option 'Display for rest of project' you can end up with a Captivate-file that looks a lot 'cleaner' (perhaps I'd better try to keep my real desktop as clean as those files).  The examples were created with Captivate 5, but they can be realized in Captivate 4 as well.

  
Please, play with this SWF a little bit. I extracted this file from a larger project where I try to motivate students and colleagues to use Twitter on the college campus. This example is like a pretest, and the result will be used to offer a customized menu of chapters to be viewed by the user (this part is not in the example). And while playing, try to figure out how you would realize this in a Captivate file.
  
Did you know this?
4 important tips you have to be aware of when showing/hiding and using 'Display for rest of project'
  1. You can apply the action Show only to objects that are really on the slide
    p.e. you put a rectangle on slide 1, set to 'Display for rest of project'; if it is initially hidden, you can only show it on slide 1, not on slides 2, 3 etc
  2. You can apply the action Hide to objects wherever this object will be visible on runtime
    p.e. for same rectangle, if it is visible, can be set to be hidden on slide 2, slide 3 etc
  3. You can choose the timing 'Display for rest of project' only for non-interactive objects, not for buttons, click boxes, Text Entry boxes
    some interactive widgets (p.e. Perpetual button) can be displayed for rest of project
  4. When 'Display for rest of project' is applied to an object, it keeps its unique ID for the rest of the project
    if you copy an object to another slide, it gets a new ID; this leads to a lot of repetitive work when creating advanced actions
In the example of the previous blog posting (Creating a keypad-simulation) I did use those tips to have a 'clean' Captivate file. What do I mean by 'clean'? Have a look at the first image in the attached image gallery: it shows the filmstrip of this Keypad-file. Watch slides 2-8: on every slide only objects added on that particular slide are visible in the Filmstrip. On the stage you'll see everything: not only the objects on that slide but also those set to 'Display for rest of project'. In the second image you see the stage focused on slide 6 'In'. Whereas the Timeline of this slide only has the objects Highlight (red), a Text Caption and a click box (third image), on the stage you also see the images 'Keypad' and 'EnterPin' (green display) which are really on slide 2 and displayed for rest of project.
  
Overview visibility objects Keypad-simulation
I really want to recommend, creating an overview before starting to configure Show/Hide actions. Here is a rather simple overview of the 4 image-objects (keypad and 3 displays) of my keypad-file. For more complex projects I would use a table:
Keypad-image         Visible on all slides from slide '2. Digit1' until slide '8. OK'
                                Not visible on slides '1. Intro' and '9. End'
EnterPin-image       Visible on all slides from slide '2. Digit1' until slide '6. In'
                                Not visible on slides '1. Intro', '7. Not-OK', '8. OK' and '9. End'
Pin_NOK-image       Visible on slide '7. Not-OK' only
Pin_OK-image         Visible on slide '8. OK' only
 
Challenge 
Could you figure out how to realize this Captivate file with Hide and Show? If you do not allow the user to repeat the entry of the pincode after the slide Not-OK it is not that difficult. I offer you some tips:
  • set objects to 'Display for rest of Project' only when they have to be visible on more than 1 slide
  • concerning the advanced actions for the click boxes: Article: create keypad-sim
  • use simple standard actions (very few statements) on entering the slides
Example pretest
The example you have been playing with at the start (pretest) is more complicated. Have a look at the 4th image in the Gallery which shows the filmstrip of this project: isn't that clean? And the last image shows the Timeline of one of the slides, slide Question4. On this slide you see:
  • a Text Caption Quest4 with the 4th question, displayed for the rest of the project
  • image SJa4: image of a button, displayed for the rest of the project; a real button is interactive, cannot be displayed for the rest of the project, and moreover it only needs button functionality on this slide, so I preferred an image that is covered up with a click box (CB only on this slide)
  • Text Caption Ja4, displayed for the rest of the project:  have to localize a lot, that is why I imported 4 layers from a Photoshop-file (two button-images and two text layers); if you do not need to change the text that often you can of course merge image and text
  • image sNee4: similar to SJa4
  • Text Caption Nee4: similar to Ja4
  • Click Box CB_Yes4: only on this slide
  • Click Box CB_No4: only on this slide
Imagine what the timeline would have been if all objects from previous slides were copied to this slide (and even worse for next slides)!

This is a typical project for which I do create a template, because it can be used over and over again. The advantage is that the advanced actions will be stored in the project, and since a lot of objects have a unique ID, due to their timing (for the rest of the project), adapting those actions to similar projects will be a lot less cumbersome.

Would you like me to explain the advanced actions used in this project or for the keypad-simulation in an article? Please, post a comment!

8 responses
Nicely explained, and a very good example to demonstrate the show/hide functionalities!
Are you trying to publish this to a mobile phone?
I would like to see some examples and workflows of that.

Thanks again for your great blog!

Lilybiri- i am still confused. for your "advanced actions" are you using the "on slide enter" then choosing multiple actions on the drop down?
Thanks, Dieter, I'm trying to publish it to my HTC, but need some more exploring, will perhaps blog about it later.
@TallisOnly: do not know which version of Captivate you are using. Advanced actions are a simplified scripting for CP, and you can open the dialog box using the Project menu, Actions. I published several blog postings and articles about the use of Advanced actions in Captivate 5. One of them is the article about the keypad-sim I'm pointing at in this posting. A good starting point is another posting 'Unleash the power of variables using advanced actions'.
thanks. i use captivate 4 and have used the advanced actions a little bit. It is VERY cumbersome in Captivate 4, as you are aware. I wasn't sure if the 'advanced actions' could have been accomplished more 'simply' or not (by using the "on slide enter" then choosing multiple actions on the drop down) function.
@TallisOnly Did not try it with multiple actions that are abandoned in Captivate5. They are not always trustworthy in CP4 to my experience, and mostly I recommend even in CP4 to replace them by an advanced actions. But the Hide/Show actions for the Keypad could perhaps be realized, the actions to be attached to the click boxes however do need conditions, so there you will need advanced actions.
Goodness, there is a great deal of effective info above!
generalpervaizmusharraf
@capbetinto1974 Thanks. If you are using version 5.5 you have to know that it is now possible to show also on slides where the object is not really sitting, for an object that is timed to show for the rest of the project. This post was written for 5.0 where only hiding was possible, not showing.