Skip navigation
Currently Being Moderated

Captivate 6 - Strange Pause Behavior

Jul 3, 2012 9:48 AM

Tags: #pause #advanced_actions #captivate_6 #cpcmndpause

Hi All,

I am having a problem with the pause slide action in Captivate.  At the end of each slide, I want the playbar to pause and not automatically forward to the next slide.

 

Here's what I did to set it up:

  1. Under slide properties > action > on exit, set execute advanced action
  2. The advanced action is assign cpCmndPause with literal 1


In Captivate versions 3 - 5, that would pause at the final frame of a slide before loading the next slide.  In Version 6, it will forward to the next slide, then pause on the first frame.

 

I did find a workaround using javascript:

  • On slide exit, execute javascript in current window: PauseSlide();
  • In the published .htm file, I added the following lines of code after line 11

 

<script language="javascript" type="text/javascript">

function PauseSlide(){

     var currFrame = document.getElementById('Captivate').cpEIGetValue('rdinfoCurrentFrame ');

     document.getElementById('Captivate').cpEISetValue('rdcmndGotoFrame', currFrame - 2);

}

</script>

 

Since the advanced action doesn't seem to occur until the first frame of the next slide, this script 'rewinds' the course to the last frame of the previous slide. It's a total hack.

 

Have you witnessed this too?

 

I am using the demo version of C6, and have found this behavior in the 64-bit version on win 7 and 32-bit version on win xp

 
Replies
  • Currently Being Moderated
    Jul 3, 2012 10:03 AM   in reply to swmangold

    Just checked it and you are correct. But why do you need such a complicated solution? I am called an "advanced actions freak", but to pause a slide at the end of its timeline, I would insert a click box somewhere and be sure its timeline extend to the end of the slide. Since a click box does pause the slide at the end of its timeline, slide will pause then. If you do not want the user to click by accident on the click box, make it pretty small and put it in a place where such a click is very improbable.

     

    You have seen that the rd variables have been replaced by cp equivalents. In the JS you still use the old names, they are still available in the JS API (Jim Leichliter told me) but wouldn't it be safe to use the new names because they will certainly disappear some time? In case you want to stay with that solution (I'm a KISS fan as well).

     

    Lilybiri

     
    |
    Mark as:
  • Currently Being Moderated
    Jul 3, 2012 11:58 AM   in reply to swmangold

    Nah it's probably permanent. the Dev team made the decision a long time ago

    to stick with some of the original RoboDemo (rd) variables for backward

    compatibility...

     

    Steve

     
    |
    Mark as:
  • Currently Being Moderated
    Jul 3, 2012 12:12 PM   in reply to swmangold

    A click box is not a button, and if you insert one properly timed on one slide, it is a breeze to copy it and paste it to all slides. You had to attach the advanced action also to each On Exit event. I wouldn't call your observation a bug, it is just a change: the On Exit event is always very dangerous to use, I mostly recommend never to use it because in case you have another interactive object with navigation attached to it, this even will never occur.

     

    I didn't check the JS variables, just learned recently from Jim that the old ones are still there in the JS API. But logically, since the new ones are there as well, they should be available to use IMO.


    Lilybiri

     
    |
    Mark as:
  • Currently Being Moderated
    Jul 3, 2012 11:06 PM   in reply to swmangold

    Hi,

     

    We can set following advance action to get this behavior:

     

    Assumptions: Slide is 30frames/sec and display time of each slide is 3sec

     

    Expression : cpCmndpause = 1+0

    Expression : cpCmndGotoFrame= 89+0

     

    This is applicable for the first slide , for the next slide we need to add "90*(slidenumber-1)" and replace 0 from the second equation. Example I want to set it for second slide then I will update the expression as               

    Expression : cpCmndGotoFrame= 89+90

     

    Hope this might give easy solution to the problem.

     

    Regards,

    Avinash

     
    |
    Mark as:
  • Currently Being Moderated
    Jul 3, 2012 11:14 PM   in reply to Avinash Agrawal

    Avinash:

    Forgive me, but I don't think your "easy" solution would be very practical for e-learning developers that need to make a living out of developing courses for clients.

     

    Unless I'm misunderstanding your solution, you seem to be suggesting something that would need to be updated slide by slide in the Advanced Actions code each time the e-learning developer made any changes to the duration of even one slide in the entire movie.

     

    Is that correct?

     
    |
    Mark as:
  • Currently Being Moderated
    Jul 3, 2012 11:42 PM   in reply to Avinash Agrawal

    I totally agree with Rod here. Why make things so complicated when a simple click box can solve what you want?


    Avinash, this is really not a nice solution, sorry for my remark. You will expect the developer to calculate that number for each slide? If we had a system variable that shows the duration or the number of frames in the current slide it could be changed so that the same action could be used for each slide, but we have not. But this seems more like an expression whe use often here to point to administratives: 'Why make it easy when you do it in a complicated way?'

     

    Lilybiri

     
    |
    Mark as:
  • Currently Being Moderated
    Jul 3, 2012 11:43 PM   in reply to swmangold

    Maybe this article about changes in CP6 by Jim Leichliter could shed some light:

     

    http://captivatedev.com/2012/07/01/adobe-captivate-6-the-javascript-ap i/

     

    Lilybiri

     
    |
    Mark as:
  • Currently Being Moderated
    Jul 4, 2012 1:07 AM   in reply to Lilybiri

    Hi,

     

    Rod & Lilybiri thanks for your honest opinion , I totally agree that  solution which I provided was not efficient for advance use, hmm.. also clickbox is a easy work around no doubt in that, well I tried with different expression and it worked for all the combinations.

     

    Now I changed the second expression as :

     

    Expression : cpCmndpause = 1+0

    Expression : cpCmndGotoFrame=  cpInfoCurrentFrame -1

     

    and there is no need to update this expression , author may use this expression on slide exit for every slide.

     

    PLease let me know your opinion on this .

     

    Regards,

    Avinash

     
    |
    Mark as:
  • Currently Being Moderated
    Jul 4, 2012 1:14 AM   in reply to Avinash Agrawal

    This makes more sense, but I have another question:

     

    Why are you using Expression in the first clause? 

    Why not just use Assign cpCmndpause = 1  ?

     

    Am I missing something?

     
    |
    Mark as:
  • Currently Being Moderated
    Jul 4, 2012 1:24 AM   in reply to RodWard

    Hi Rod,

     

    We can also use Assign cpCmndpause =1 that makes no difference.

     

    Regards,

    Avinash

     
    |
    Mark as:
  • Currently Being Moderated
    Jul 4, 2012 5:56 AM   in reply to Avinash Agrawal

    Want to repeat my warning that On Exit event is not sure at all to be executed, if the playhead doesn't reach the last frame which can be caused by another ineractive object that navigates directly to some slide.

     

    Lilybiri

     
    |
    Mark as:
  • Currently Being Moderated
    Jul 4, 2012 11:52 AM   in reply to Lilybiri

    Hey there ,

     

    First I am newbie to this forum .. I'd like to thank you guys 'cause you all make so much effort to resolve our issues.

     

    I also faced similar issue, read all the post above could understand wich option should I adopt ? I am not a script person neither my students  so want to stay away from it, I liked the clickbox idea but not sure if I want to put an extra object on my slides. Finally tried expression options described above, it worked somehow but scared of Lilybiri's warning.  Lilybiri can you  describe  more in detail when OnExit event will not fire ( with an example if possible) because if some object is navigating me  to some slide I dont want on exit action to pause me . Can you make me understand this ?

     

    Rest my students are liking captivate, and I am impressed by new Themes  and software simulation...they are cool !!

     
    |
    Mark as:
  • Currently Being Moderated
    Jul 4, 2012 12:15 PM   in reply to dangeo57

    Hello,

     

    timeline.png

     

    In this screenshot you see a button with the default settings: duratoin 3secs, pause at 1.5secs. The success action for that button is also the default one 'Go to Next Slide'.

     

    When this slide is playing, the playhead will start at the first frame, move on and stop at frame 45, because of that pause (default frame rate = 30fpx, so 1.5secs = 45 frames). When the user clicks on the button, the action 'On Success' of that button is executed, the playhead moves immediately to the next slide, which starts at frame 91. The frames between 45 and 91 will never be visited, and the On Exit action of the slide will not be executed because the last frame (90) of that slide will never be reached.

     

    Lilybiri

     
    |
    Mark as:
  • Currently Being Moderated
    Jul 5, 2012 1:58 PM   in reply to swmangold

    In the list that Jim published with the properties of  m_varhandle, I did see the new as well as the old variables? Checked several of them.


    I hesitated to point out to Avanish that cpCmndGotoFrame does stop the playhead... had already been bit too critical in another thread.

     

    Lilybiri

     
    |
    Mark as:
  • Currently Being Moderated
    Jul 10, 2012 12:05 PM   in reply to Lilybiri

    Hi there,

     

    Lilybiri- Thanks for explaining me the on exit concept but I see no point in executing on exit action on navigating to  some other slide. If on exit says pause ,and I have a button which says jump to some slide I dont want on exit action interrupting me in between, and if I want  increment/decrement assign etc , I will go with On enter slide action rather than on exit , may be my understanding is different but I think this is very rare scenario.

     

    Also I think solution provided by Avinash is correct , cpCmndpause =1 is required, I tried only with cpCmndGotoFrame = cpInfoCurrentFrame -1 but on HTML5 o/p i saw  play pause button is changing their states very quickly, but when I put cpcmndpause =1 it work'd perfectly fine,  @swmangold and Lilybiri did you check HTML5 o/p without pause thing, please let me know your observations.

     

    @Avinash - finally your solution worked for me , but can you suggest me something better, When I am pause and if I want to continue I have to press Next button to continue ,  is it possible that if I press play button and I  go to next slide ?

     

    Danny

     
    |
    Mark as:
  • Currently Being Moderated
    Jul 11, 2012 12:41 AM   in reply to dangeo57

    OK, I didn't explain well again, give up. Just warned that the On exit action (which I didn't say that it would be a navigation action) will not be executed if you have another interactive object that triggers navigation. I have been answering so many questions where an On Exit action seems not to be functional just because of that. Terminology is confusing: On Exit doesn't mean when leaving the slide, it means when reaching the last frame of the slide.

     

    Will check the HTML-difference where the normal behavior of an standard action, not releasing the playhead, should be disturbed as you say. I didn't see such a behavior until now, but that doesn't mean you are not correct.

     

    Lilybiri

     
    |
    Mark as:
  • Currently Being Moderated
    Jul 11, 2012 4:12 AM   in reply to dangeo57

    Hi Danny,

     

    PLese use following action for every slide

     

    On slide enter:

     

     

    slideenter =1

     

     

    On Slide exit do following conditional action:

    If slideenter =1

     

     

    cpCmndpause = 1

    cpCmndGotoFrame=  cpInfoCurrentFrame- slideenter

    slideenter = 0;

     

     

    else

     

    continue

     

    where slideenter is user defined variable set to 0 by default. Try this, let me know if it works ?

     

    Regards,

    Avinash

     
    |
    Mark as:
  • Currently Being Moderated
    Aug 2, 2012 4:34 AM   in reply to swmangold

    Hi swmangold,

     

    May I know what problem you faced ? Can you describe it , if you want I can send you a sample cptx file for which these actions are implemented. PLease provide your email .

     

    Regards,

    Avinash

     
    |
    Mark as:
  • Currently Being Moderated
    Aug 17, 2012 9:46 AM   in reply to Lilybiri

    Hi Lilybiri,

     

    There are two reasons why a click box in this scenario is not as good as an Advanced Action to pause the slide -

     

    1. The click boxes take much longer to apply. You have to apply each click box individually to the end of the slide, manually change the timing, etc. Unless each slide in the project is the exact same duration, then a copy and paste of the button to all will still require individual tweaking.

     

    2. I've found that, often, the TOC's "status" flag does not get updated/checked if a click box/button is used. I presume this is because the pause is skipping that very last frame.

     

    I realize this thread/issue is old now, but I just ran into it this morning when trying to publish a project created in Cp 5.5 in Cp 6. It turns out that ANY slide created in Cp 5.5 (or, presumably, earlier) will ignore any Advanced Actions applied to it. In my case, I tried numerous things (deleting/recreating the advanced actions, re-applying them to slides, etc.) and nothing worked. But, if a slide is created from within Cp 6, then the On Exit Advanced Actions work fine.

     

    An example to illustrate further: if you copy slides from a Cp 5.5 project into a Cp 6 project that already contains some slides, then those newly copied slides will not work with the On Exit Advanced Actions whereas the ones native to Cp 6 will. It's a bug, but not the end of the world, unless you uninstalled Cp 5.5 and no longer have it : (

     
    |
    Mark as:
  • Currently Being Moderated
    Aug 17, 2012 10:23 AM   in reply to elearning_dude

    There are some changes in the way Advanced actions do function in CP6, still exploring and will blog about the changes once everything is clarified for me. It is not the upgrade, but the way the On Enter and On Exit events do trigger advanced actions.


    You are correct about the TOC, if the slide is not completely visited the slide will not be checked automatically in the TOC. But then I use the TickTOC widget from InfoSemantics.

     

    Lilybiri

     
    |
    Mark as:
  • Currently Being Moderated
    Aug 17, 2012 7:02 PM   in reply to Lilybiri

    Please note that the TickTOC widget is not compatible with Cp6 at this stage.  Adobe has changed the way the TOC registers slide completions and the way we were detecting that in previous Cp versions with TickTOC no longer works in Cp6.  We've let Adobe know and we're waiting on them to suggest a workaround.  So far nothing.

     
    |
    Mark as:
  • Currently Being Moderated
    Aug 18, 2012 1:34 AM   in reply to RodWard

    Thanks for that message, Rod, forgot that the user is on CP6.

     
    |
    Mark as:
  • Currently Being Moderated
    Jan 6, 2013 3:30 AM   in reply to Lilybiri

    Hello, has a solution to this been found yet?

     

     

    Ive only been using Captivate for a week, so could be my inexperience but i seem to have the problem as well.

     

    I have a slide with a button that opens an image. On the image another button closes the image, however if the slides duration has expired when either button is clicked, it proceeds to the next slide.

     

    Any advice would be very appreciated, thank you.

     
    |
    Mark as:
  • Currently Being Moderated
    Jan 6, 2013 4:22 AM   in reply to Dan McCarthy 22

    Hello and welcome to the forum,

     

    Hope you do not mind that I was smiling: you are posting on a thread in Advanced Adobe Captivate Users, which is a big contrast to your statement 'I've only been using Captivate for a week'.

     

    This explains also why the original question is totally different from yours, and an answer to that question will not help you. The default behavior of a button is that when it is clicked not only the On Success action is executed (like Open Image) but the playhead is released as well. If you kept the default settings for the button, this means that the playhead will get past the Pausing point (at 1.5seconds) and gets in the inactive portion of the button (after the Pause) and moves until it is either paused again (by another interactive object) or it reaches the end of the slide and gets to the next slide.

     

    First let us know how you configured those buttons? I suppose the image was originally invisible and the success action for the first button was to Show that image. But you also talk about ' another button on the image '? Does this mean that you use an advanced standard action to show both the image AND the close button? Do both buttons have a pause, and if yes, are those pausing points perhaps at the same time on the timeline? Please answer those questions and perhaps post a screenshot of your timeline and the stage with the objects?

     

    Simplest way to me to avoid having the playhead to continue when a button with a simple action is clicked is to replace it by a standard advanced action. But since I first need an answer about how you arranged to have image and close buton appearing at the same time?

     

    Here is an explanation of that difference between simple and standard advanced actions:

    http://lilybiri.posterous.com/why-choose-standard-over-simple-action   it has a link to a YouTube video as well.

     

    BTW: which version do you use?

     

    Lilybiri

     
    |
    Mark as:
  • Currently Being Moderated
    Jan 6, 2013 6:31 AM   in reply to Lilybiri

    Wow, thank you for the rapid response, im very impressed.

     

    I got to this thread from a google search so sorry for the wrong place, im certainly not an advanced user

    After looking through your video I learned how 'Execute Advanced Actions' and this has resolved my issue.

     

    My version is 6

     

    Thank you very very much.

     

    Dan

     
    |
    Mark as:
  • Currently Being Moderated
    Feb 14, 2013 2:05 PM   in reply to Lilybiri

    Lilybiri,

    Please help - i tried to follow the link you posted here b/c i am hoping it will answer my questins but i can't seem to get to the video - only an artcle about the video and then when i click the link to watch the video i get asked to log in and get taken to general page - then i try to access again and no luck! Is video still available and how can i access it.

     

    What i have is slides in Cap 6 with advanced actions which show and hide various pop up boxes with information. I want to user to be able to click them in any order and as many times as they want. Then to advance to next slide click the default navigation button for Forward. So when i converted out PPT's over to Cap - the large click box was created - i resized and dragged to a corner and moved taht box on the timeline to the very end.

     

    But i am having problems with interactions working if the timeline reaches the end and don't knwo what to do...

     

    I can't believe something whcih sounds so easy - wanting the slide to not advance until user clicks Forward - can be so complicated...

     

    Thanks,

    Regina

     
    |
    Mark as:
  • Currently Being Moderated
    Feb 14, 2013 2:55 PM   in reply to Rsm427

    The video tutorial is also published on YouTube (plays fine for me from the blog post, do not know what happens for you):

     

    http://www.youtube.com/watch?v=M3nKi-DB6Fw&feature=plcp

     

    Lilybiri

     
    |
    Mark as:

More Like This

  • Retrieving data ...

Bookmarked By (0)

Answers + Points = Status

  • 10 points awarded for Correct Answers
  • 5 points awarded for Helpful Answers
  • 10,000+ points
  • 1,001-10,000 points
  • 501-1,000 points
  • 5-500 points