Copy link to clipboard
Copied
Dear all,
I'm trying to create a project with several steps like a mission. And the learner as to follow step by step and, and pedagogically all the element should stay in the same page.
I know that with Articultate it is possible to create a project with the possibiliy to scroll the page, is there a what to do that with Captivate ?
Thank you,
Karim
While not exactly the same - you could place a little JavaScript as an onEnter action to your first slide to allow you to use the scroll wheel to advance and go backwards through your slide deck.
$(window).on("wheel",function(event) {
if (event.originalEvent.deltaY<0) {
cp.goToPreviousSlide();
}
else {
cp.goToNextSlide();
}
});
Copy link to clipboard
Copied
If you are referring to the way Articulate Rise scrolls down the page with each section acting as a separate block, then the answer is no. Captivate does not work like this.
Copy link to clipboard
Copied
Thank you for your answer!
This is pity! It woul give more possibilities for the authoritors...
You think this is soemthing that it could be developed in the futur? or it is not compatible with the Captivate conception ?
Copy link to clipboard
Copied
Just out of curiosity: why is scrolling in your view so essential for eLearning courses? I don't like scrolling, but apparently you do. I am sure you can find a lot of possibilities in Captivate which do not exist in Rise. As long as the tool can be used to reach the goal: efficient, engaging learning assets, I don't think specific features are the most important. If you like that scrolling, please use Rise.
Copy link to clipboard
Copied
While not exactly the same - you could place a little JavaScript as an onEnter action to your first slide to allow you to use the scroll wheel to advance and go backwards through your slide deck.
$(window).on("wheel",function(event) {
if (event.originalEvent.deltaY<0) {
cp.goToPreviousSlide();
}
else {
cp.goToNextSlide();
}
});
Copy link to clipboard
Copied
That't great, thank you man!
With some advanced actions I will be able to finaize my project.
Cheers,
Copy link to clipboard
Copied
This is almost exactly what I'm looking for!!! Your code worked great. Just as you described. One more question remains: how do I get the scrolling to stop on the last object state when user scrolls down and stop on the first object state when user scrolls up?
Copy link to clipboard
Copied
If you are using the scroll wheel to cycle through object states.
Make yourself a variable in Captivate - in my example num you could set it equal to 1.
Then you can run a check based on the number of states that you have.
I this example - assume six states for an object called myShape
Basically as you scroll - you increase or decrease the variable and keep going until you hit 1 or 6
$(window).on("wheel",function(event) {
if (event.originalEvent.deltaY<0) {
if (num!=0) {
cp.goToPreviousState("myShape");
--num;
}
}
else {
if (num!=5) {
cp.goToNextState("myShape");
++num;
}
}
});
Copy link to clipboard
Copied
Brilliant! That works wonderfully! Additionally, I can think of so many more uses for this function other than mimicking the scroll wheel on a mouse. Thank you very much!
Copy link to clipboard
Copied
So lately, I tried to get creative and tweak your solution to scroll through a set number of slides. So instead of cycling through object states, it advances to the next or previous slide. This worked until I scrolled to the "bottom" and then back to the "top" slide. Then, for whatever reason, num started incrementing and decrementing by 2 instead of 1 when scrolling back down. How does the scroll wheel event listener know whether the user is scrolling up or down and thereby trigger the increment or decrement num? Here's the code I used for reference. Instead of num, reviewslidesnum is used:
$(window).on("wheel",function(event) {
if (event.originalEvent.deltaY<0) {
if (reviewscreensnum!=1) {
cp.goToPreviousSlide();
--reviewscreensnum;
}
}
else {
if (reviewscreensnum!=5) {
cp.goToNextSlide();
++reviewscreensnum;
}
}
});
Copy link to clipboard
Copied
The main difference is that in the example you used, we were looking at tracking the first and last object state so that the images did not cycle around but instead would stop and force the user to scroll the other way. This was also taking place on a single slide
The slides in your project do not cycle around so there is no need to use the variable. Just go to the next and previous slides. Check out the code I left earlier in this thread for the cycle through slides. That should take care of you.
Since the code was placed onEnter for the first slide, when you went back to the slide, the code was executed again so you had two instances running on top of each other which made the ++variable and --variable double up on themselves.
Copy link to clipboard
Copied
That makes complete sense. Thank you. So the last piece of my puzzle is this: If I want scrolling to happen on some, but not all of my slides, how do I delimit the scrolling effect? You're correct that if I want the scroll wheel to apply to all slides in my project, then I just plug your original code in the OnEnter action of the first slide, but suppose I want to turn on scrolling for specific groups of slides, is there a way to do that?
Copy link to clipboard
Copied
Yes,
In the provided code we turn ON an event listener for the scroll wheel.
You simply need to turn it off on the desired slide.
$(window).off("wheel");
But that means you will need to turn it back on somewhere else. When you turn it on again you need to use all the same code for setting it. For example, if the course is strictly linear, you may simply need to make some ranges where you activate within range and deactivate when our of range.
Below - you would have a scenario where you could scroll to slide 5 but then it would stop working. If you manually navigate to slide 8, you could scroll to the end of the project.
If you scroll back to 7 it would shut off again.
Slide1 - ON
Slide4 - ON
Slide5 - OFF
Slide7 - OFF
Slide8 - ON
Hopefully that makes sense. If you had a lot of this to do - I would make the code for turning the listener on into a function so you can simply call the function on the appropriate slides and reduce the amount of code.