I'm trying to convert some rollover slidelets into multi-state objects so the functionality of the rollover isn't lost as a result of the Flash sunset. I already know I can put images, objects, text, and audio (attached to an object) into the rollover state that will mimic most of what I already have. I know I'm going to lose the timing aspect (the images and text would enter at specific times on the slidelet timeline that isn't possible in the rollover state.
What'd I like to know is how I incorporate the viewed rollover state into advanced actions. Basically, I want to have four objects with rollover states, and I want to enforce views of all of four of them with variables/actions that determine if the Continue button will display on the screen.
Rollover state is an InBuilt state. That means that it just appears in a certain situation, in this case when hovering over the button. Hovering is not an event which can trigger an advanced action.
Hope you are also aware of the fact that the Rollover state will never appear on mobile devices, but only will be functional on desktop/laptops? If you want to be safe for all devices, you need to use tap on a button to change a state in a multistate object. In that case an advanced or shared action is possible.
Adding to what Lieve has said:
You need to create Custom Object States that can indicate something has been visited and then use your Advanced Actions to change the state of the Object to that custom state at the appropriate time.
Enforcing the view of all states will mean creating User Variables to track whether or not a learner has viewed the object. Then you use a Conditional Advanced Action to check which variables have been viewed. If all have been viewed then show the hidden Continue button. There are plenty of YouTube videos for Captivate about how to do this.
Sorry to disagree slightly, Rod.
There is an InBuilt state 'Visited' which automatically appears when you have clicked the button once. This means you don't really need a custom state for that situation. That Visited state is not included in the Object style, and can also be applied by an (advanced) action. It is a bit strange, I know. To track the visits of all views you need user variables of course, but also an event to be used to toggle those variables.
Yes you are correct that you would need an action to assign the values of the tracking variables so that the Conditional Action can then have something to check.
I have never trusted the in-built Visited state on objects, simply because it would automatically get changed. I always preferred to delete that state and add my own custom state which would then ONLY appear if I chose to set it as the currently active state via Advanced Actions. That always felt more predictable and reliable to me. But if you find the automatic functionality works well enough, that's fine too.
Okay, I admit the use of Multi-State objects is a bit new to me, so please be kind as a I ask some fairly amateurish questions.
When using Rollover Slidelets, there was the option in the Actions tab to perform a task upon rollover. Which in my case, meant Executing an Advanced Action that would a) modify the value of the view variable and b) check the value of all view variables for the four sections to determine if the Continue button would display. Building these kind of variable and Advanced Action relationship I am very familiar with.
However, if I'm understanding this converation correctly, no similar option exists for the Rollover State. Hovering over the element will display the rollover state (and all associated images and objects, etc), but there's no option built into the system for me to have variables track when this is done.
Lieve, you said I might have to have the learner tap the button. I'm assuming you mean click it. I know if they click it, I can use the "On Success" Action to Execute an Advanced Action similar to what I described above.
My question then is - if I'm using the button click to display the content in the Rollover State (i'm assuming that's the intent) - how to do that content vanish without building an additional Action to hide it?
I have used the rollover event of the Rollover slidelet myself, as you can see in this very old post:
However that rollover event was unique. Buttons had rollover states as well, but never had an associated event and that is still the case today. Since HTML5 output has killed the Rollover slidelet, you need totally different workflows.
I used the word 'tap' because that is the word used for mobile devices, but it is exactly the same event as the Success event when clicking a button or a click box.
Since you cannot use the automatically appearing Rollover state when you hover over an interactive object to trigger an (advanced) action, you have to look for another workflow. I would recommend to get rid of trying to use rollovers in this case. That is the reason why I talked about using multistate objects, which are around since several versions (still don't know your version) and have totally changed my projects. They come just behind my primary feature which are shapes, used as buttons and containers.
If you use a button to be clicked or tapped, and the Change State commands, you need indeed a way to 'close' that state again. Here are a couple of ideas, with some links:
You see that it is possible, but you have to leave your 'stubborn' attachment to rollovers. 🙂
But I love my rollovers!!!!!
In all seriousness - this is what I'd like to avoid, which are the two solutions I'm familar with:
1) Building one Action for each of the four elements to display the content upon clicking (and hide the content of the other three), and one for the slide upon entry to make certain the slide is in the unviewed state if the learner progresses backwards. This is easily done, but it's an awful lot of work.
2) have the content that was previously in a rollover slidelet go to a new slide that returns to the previous slide upon completion. I'd still need to track views and compare variables with Actions - I'm just not a fan of the learner moving off the slide and then returning to it. I usually hide most of the playback controls as it is, and this is more movement along the filmstrip than I'd prefer. But the Actions would be cleaner and easier to manage since I'm not using any Hide / Show commands.
I offered you a lot of my knowledge about multistate objects. I never use Show/Hide when I can avoid it. Talk with the fruit company why they banned SWF... but rollovers are dead for your use cases.
Maybe someone else will give you another solution. Staying with old workflows may seem easy, but they are at this moment blocking you to move ahead. Sorry for that comment. I have seen this so many time on the forums, people staying with workflows which were perfect 6, 7, ...15 years ago but now outdated.
Oh, I definitely appreciate the advice, Lieve. I'm just considering what the best path available is.