• Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
    Dedicated community for Japanese speakers
  • 한국 커뮤니티
    Dedicated community for Korean speakers
Exit
0

On each slide, can I hide the playbar until the slide timeline finishes?

Participant ,
Dec 16, 2019 Dec 16, 2019

Copy link to clipboard

Copied

I'm working on a non-responsive project in Captivate 2019. I'd like the learner to be unable to advance until the slide timeline is done. I've done this with hiding and showing a Next button that I've added to the stage, but for this project I want to do it with the playbar Forward button.

Is there a way I can hide the playbar, or even just the playbar Forward button, when a slide timeline begins, and then show the playbar or button when the timeline completes? I've looked at slide actions, at Advanced Actions, and I've searched online, but I haven't found a solution yet.

TOPICS
Advanced actions

Views

636

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Dec 16, 2019 Dec 16, 2019

Copy link to clipboard

Copied

You can use an Advanced Action triggered ON Slide Enter to hide the Playbar, but you don't have the option of hiding just one component of the playbar (e.g. the Next button). 

 

Once hidden, the playbar will remain hidden until another action shows it again.  However, Captivate is a little limited in regards to options to trigger the SHOW action that do not involve the user doing something.  You do have an event at the end of the slide (called On Exit) and you could set up an Advanced Action to be triggered by this event that first Pauses the timeline (before it advances to the next slide) and then shows the playbar.  However, most seasoned Captivate developers will advise you against using this On Exit event because it actually fires right on or after the final frame of the slide.  Any split second in mistiming and the event may not fire in time and your action does not happen.

 

Another option is to add another couple of actions to the Advanced Action triggered On Slide Enter of the slide, this time using the Delay Next Action By action to specify how many seconds should elapse before then executing another action to Show the playbar.  However, the down side of this is that if your slides are all different lengths then you need to use a different Advanced Action for each slide.  A Shared Action might be worth considering in this situation because it gives you the option of using a parameter to specify how many seconds the delay period should be.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Participant ,
Dec 17, 2019 Dec 17, 2019

Copy link to clipboard

Copied

Thanks for all the information, Rod. It's helpful. I might try Delay Next Action By, maybe as a Shared Action. Most of the slide durations are all between 2 and 5 seconds, with most of them being 3 seconds. That might not be too labor-intensive a process.

Or, I might just go to Plan B and put a Next button on the slide, setting it to appear just before the timeline ends.

Thanks again!

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Dec 17, 2019 Dec 17, 2019

Copy link to clipboard

Copied

Just as a supplement to Rod's information. You also need to reflect on a possible extra situation: will you allow the learner to revisit the slide? In that case, will you impose the same waiting time for the Next button to appear? The delay command is very useful, but you have to know that it will not take into account eventual pauses on the slide (from interactive objects or a Pause button).

 

I have a couple of blogs about Forcing a first view, which could also offer an alternative in case of allowing revisit or avoiding overriding pausing by Delay command. Here is one link:

http://blog.lilybiri.com/force-first-slide-view-micro-navigation

 

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Advisor ,
Dec 17, 2019 Dec 17, 2019

Copy link to clipboard

Copied

Another possible solution would be to add a little script to your onEnter action.

 

setTimeout(function() {
cpCmndShowPlaybar=0;
},250);

setTimeout(function() {
cpCmndShowPlaybar=1;
},2500);

setTimeout(function() {
cpCmndPause=1;
},2990);

 

I will explain the above code a little. This would be placed on each slide as an onEnter action with some slight modification depending on the overall legth of the slide.

 

We see three setTimeout blocks above.

The first one will hide the playbar after a quarter second (250).

The second one will show the playbar again after 2.5 seconds (2500).

The final one would pause the slide after 2.99 seconds (2990).

 

You would want to modify the time on the second and third blocks. Modify the second block to be about a half second shy of the full length of the slide. The value is in milliseconds so 1000 is equal to one second.

Modify the final block number value to be just a hair short of the full slide length. In my example, the slide length is 3 seconds (3000) so I set the pause to happen at 2990.

 

The pause is so that the learner would use the playbar to advance if that is what you are after.

 

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
People's Champ ,
Dec 17, 2019 Dec 17, 2019

Copy link to clipboard

Copied

The delay next action by sets a timer exactly the same way.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Dec 17, 2019 Dec 17, 2019

Copy link to clipboard

Copied

That is what I thought, but Greg never believed me. 

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Advisor ,
Dec 17, 2019 Dec 17, 2019

Copy link to clipboard

Copied

LATEST

???

 

What makes you think that I do not believe you about how delay next action works?

I do not recall ever having a debate about that.

 

I simply offered another way (among many) to tackle a particular problem.

 

We can leave it to the questioner to take whichever route they want.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
People's Champ ,
Dec 17, 2019 Dec 17, 2019

Copy link to clipboard

Copied

If you execute this JavaScript on Slide Enter, it will do what you want:

 

var csTo;
window.cpCmndShowPlaybar = 0;

window.cpAPIEventEmitter.addEventListener( 'CPAPI_SLIDEENTER', function ( e )
{
csTo = e.Data.to
window.cpAPIEventEmitter.addEventListener( 'CPAPI_VARIABLEVALUECHANGED', runSlideTimer, 'cpInfoCurrentFrame' )
});

function runSlideTimer( e )
{  
if ( window.cpInfoCurrentFrame > csTo - 5 )
{
window.cpCmndShowPlaybar = 1;
}
}

 

You can also create a progress variable and it will show the playbar if you have completed the slide.

 

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Resources
Help resources