Captivate 6, Pausing Playback (a workaround)

Posted by Ed Gipple on Jan 29, 2013 1:07:00 PM

Here’s a quick tip:

In previous versions of Captivate in which you could use Advanced Actions (versions 3 through 5.5), a neat way to pause a slide was to setup a custom action with “ Assign cpCmndPause with (literal) 1”. In essence, that tells the internal Captivate function ‘pause’ to be ‘true’, resulting in the slide halting playback at the point that Advanced Action was invoked.

And a common place for that function to be invoked was ‘On Exit’ (of the slide), so just as a given slide reached the end and ‘exited’ – about to move to the next slide – calling that custom action would pause the slide before playback brought the next slide onto the stage.

However, in the current version of Captivate 6, that doesn’t work. For some reason (likely a bug, hopefully fixed in a forthcoming patch), Captivate 6 actually moves to the first frame of the next slide, THEN pauses playback…which is essentially the same thing as placing this custom pause action on ‘slide entry’ of that next slide…making the way CP6 interprets ‘slide exit’ as rather redundant.
A simple workaround, as was done before Advanced Actions were introduced, is to place a ‘click box’ at the end of the slide timeline, forcing the slide to pause before continuing to the end. There are a few downsides to that approach though:
  1. You have to place the clickbox on every single slide. Even with copy/paste, you’ll likely have to adjust where the clickbox lies on the timeline.
  2. If the user doesn’t ‘click the box’ and uses some other method to advance to the next slide (i.e. Next in the playback bar), then the end of that slide is never reached, which will result in that slide not being ‘complete’…which can then be reflected in both TOC checkmarks and the SCORM-based completion status.

Fortunately there’s a better workaround! If you have an existing project with an Advanced Action intended to pause slides ‘On Exit’ then you can simply add another line with “Expression cpCmndGotoFrame = cpInfoCurrentFrame -1”. This tells the slide to jump back one frame, which avoids the incorrect (we assume) behavior where CP6 actually moves to the next frame before executing the actions specified in the ‘On Exit’ property. Here’s how we modified an earlier project that was upgraded to CP6 that contained this ‘PauseMe’ functionality:

Now, note, since the ‘cpCmndGotoFrame’ function itself automatically pauses playback, you don’t even need to specifically invoke the ‘cpCmndPause’ at all! We left it there…just in case, but it’s really not necessary.
Now the upgraded CP6 project (formerly created in CP5) plays back as intended – no more continuous playback where it should be pausing. And additionally, it’s likely this Action will not need modification if this odd On Exit behavior is fixed in a future patch – this setup should still pause slide playback as intended. The only issue we envision is if your slide has a visual change on the very last frame of a slide, which would seem unlikely…(though we’d love to hear if you do, any why).
Hope this helps!