changing the state of objects on the base layer from another layer

Is it possible to access the state of base layer objects from a higher layer?

I'm trying to set up a course where users need to view every object on a slide before advancing - a bad idea, but the client is adamant. There are 3 objects on the base layer that, when clicked, open new layers.  So I set it up so that the next button is disabled until the state of the three base layer objects is 'visited'. So far so good. The user can't advance until they've clicked on each object and opened the popup layer.

Each of the layers has a few markers, and I set it up so the user can't close the layer window until they have viewed every marker. The layer is closed/hidden via  a button on the layer.

Now for the problem - if they open and complete the first two layers, and then open the third layer, the object on the base layer that causes the third layer to open has its state changed to 'visited', so the next button is now enabled, even though they haven't seen everything on the third popup layer.

So I made a new state for the base layer objects called 'completed', and I want to switch the state of the base layer object to 'completed' when the user closes the popup layer window. But to do that, I need to be able to change the state of the base layer objects when I click on a button on a higher layer.

Does that make sense?

46 Replies
Leslie Steele

Walt,

Thank you for your help and the instructions. I'm still trying to
understand it all. One thing I didn't mention is that this was just one of
about 30 other slides on which I wanted the same kind of interaction. When
I get this one working correctly, I will duplicate it to three other scenes.
I have a landing page from which the user selects which brand (of four) he
represents. Once he selects his brand, he is taken to the evaluation
"Landing Page," (where the Home button takes the user). From there he clicks
on one of about 30 different areas within the store to evaluate. The slide
you saw is the "Outside Back" slide.where the areas to evaluate under that
category are defined (Parking Lot, Sidewalk, Windows, etc.) Each of those
areas has its own layer where I explain what the inspector is looking for in
each area.

If you're open to the idea, I can send you the entire project and hopefully
talk to you (on the phone) about what I'm trying to accomplish with this
project-really my first truly interactive piece. Maybe I'm overly
complicating it. Originally I had about 15 of the slides complete and
working, but instead of using states, I added a colored rectangle behind the
text. As the user selected each area (text box), I manually moved the
colored triangle to position it over the appropriate box. Because the
layers all looked so similar, I was trying to give a visual cue to the
learner which area's definition he was viewing. Then I thought: "idiot.
You could have used states!" so I tried that with the other slides. That's
when I reached out for help (after reading and watching tutorials).

Please let me know if you are willing and interested in talking to me
personally.

Thank you so much,

Leslie

Walt Hamilton

I think the principle you are looking for is to design the layers so that the buttons on the landing page show . That way the user can see which have been visited, and can click on any other button to go to another area.

I agree that using the built-in "Visited" state is the easiest method of doing that.

Leslie Steele

Ashley, Below is what I'm trying to accomplish. My "Sidewalk" states seem
to be working correctly, but my "Parking Lot" isn't. When I click once, the
"Parking Lot" layer appears, but the state doesn't change until I click
"Parking Lot" again. Also, even though I have the triggers set as described
below, even when I click "Sidewalk" a second time, the state changes back to
"normal." I didn't want it to change to normal unless the user clicks away
from the "Sidewalk" target.

I have a landing page from which the user selects which brand (of four) he
represents. Once he selects his brand, he is taken to the evaluation
"Landing Page." From there he clicks on one of about 30 different areas
within the store to evaluate. The slide you saw is the "Outside Back"
slide.where the areas to evaluate under that category are defined (Parking
Lot, Sidewalk, Windows, etc.) Each of those areas has its own layer where I
explain what the inspector is looking for in each area. I want the state to
change to a highlighted appearance so the user will know which area is
currently selected. Can you please tell me what I'm doing wrong?

Is it correct that I will need to have four triggers for every area? 1)
Change state to "clicked" when user clicks; 2) show layer "x" (e.g.,
Sidewalk) when the user clicks "Sidewalk;" 3) Change state to normal when
the user clicks away from "Sidewalk;" 4) Hide layer "x" when user clicks
outside the target?

Thank you so much for your help.

Leslie Steele

Ashley,  Below is what I’m trying to accomplish.  My “Sidewalk” states seem to be working correctly, but my “Parking Lot” isn’t.  When I click once, the “Parking Lot” layer appears, but the state doesn’t change until I click “Parking Lot” again.  Also, even though I have the triggers set as described below, even when I click “Sidewalk” a second time, the state changes back to “normal.” I didn’t want it to change to normal unless the user clicks away from the “Sidewalk” target.

I have a landing page from which the user selects which brand (of four) he represents.  Once he selects his brand, he is taken to the evaluation “Landing Page.” From there he clicks on one of about 30 different areas within the store to evaluate.  The slide you saw is the “Outside Back” slide…where the areas to evaluate under that category are defined (Parking Lot, Sidewalk, Windows, etc.) Each of those areas has its own layer where I explain what the inspector is looking for in each area. I want the state to change to a highlighted appearance so the user will know which area is currently selected.  Can you please tell me what I’m doing wrong?

Is it correct that I will need to have four triggers for every area? 1) Change state to “clicked” when user clicks; 2) show layer “x” (e.g., Sidewalk) when the user clicks “Sidewalk;” 3) Change state to normal when the user clicks away from “Sidewalk;” 4) Hide layer “x” when user clicks outside the target?

Thank you so much for your help.

Helena Smith

I am having a similar issue. I have variables in place to not allow a user to move forward until all tabs have been clicked.  However, once the user moves to the next slide (If they decide to hit the previous button) and all of the tabs have been selected, the "next' button isn't enabled. 

Walt Hamilton

Helena,

Add another trigger to show the Next button when the timeline starts. It does not show now because the variable has already changed, but a new trigger will check when the timeline starts (when they click Previous and return to this slide after they finish it) and show the Next button if the variable is True.

 

 

Walt Hamilton

Normally, you wouldn't, but your first trigger disables it.

Technically, you could put a condition on that first trigger to disable Next if the variable isn't true. Personally, I think this way is more the way I intuitively view things, and that will make it much easier for me to come back in two weeks (or two years) if I have to figure out what it does so I can maintain or troubleshoot it. YMMV.

Leslie Steele

I'm trying to use the format painter to set the "selected" state on several
text boxes to match the "selected" state I've set for another text box, but
I haven't been able to figure out how. Can you walk me through that
process? After I click on the text box I want to copy, "grab" my format
painter, and move to another object, I lose my format painter. Please help.
Thanks!

Leslie Steele

Thank you, Ashley. That helps.  I finally figured out that I could copy an object with the desired properties to another slide and use the format painter from there on the objects on that slide...then just delete the objects I copied from the original slide. It's a little more convoluted than I was thinking it had to be, but I made it work. Please let me know if there's an easier way.

I also attached a couple of slides that resulted from that approach on another discussion today. There were some inconsistencies in how the states displayed. Can you easily locate that post? I've posted so much lately that I"m not sure where I've posted which questions. I would like to say, though, that y'all are great about getting back to users quickly. Thank you for that.

I also posted a response to Lesley from your team on another discussion that asked the same question.  I'd hate for y'all to duplicate your work.  Another "duh" moment: I couldn't figure out how to link to that discussion. Otherwise I'd make it a little easier for you.

Jazzmine O

Hoping someone will be able to help though this is an older thread. I'm trying to get an avatar to change states based on media. The goal is to allow the poor fellow to close his mouth on the Base Layer when he's not "speaking." I've played with several triggers and variables (as you'll see when you open the file), but he remains stubbornly open-mouthed. :(

How can I get him to change states based on media completing in different layers on the slide? This is getting messy fast, but still no results.

Karen Alveston

I have a slide with three buttons and three corresponding layers. When user click button one, layer one opens, click button two, layer two opens.... you get it.

So, on layer one, I have a trigger that sets variable Layer1Complete to TRUE when timeline starts on this layer.

I have a corresponding trigger on the base layer that says change the state of button one to Completed when the timeline starts IF Layer1Complete is TRUE.

Unfortunately, button one's state does not change. I want the state to change that shows a checkmark that they have successfully selected/completed button one.

I am guessing that "when the timeline starts" is incorrect because we are coming back to the base from layer one, not another slide, so the timeline isn't starting, or re-starting, for that matter. 

Suggestions? Thank you!

Walt Hamilton

I am guessing that "when the timeline starts" is incorrect because we are coming back to the base from layer one, not another slide, so the timeline isn't starting, or re-starting, for that matter.

You are entirely correct. 

You can change the state of button one to Completed when Layer1Complete changes if Layer1Complete is TRUE.

This works, because all the layers are part of the same slide, and within the slide, you can hear when a variable changes.

The same approach won't work if the variable changes on a different slide, because a variable change can be heard only on the slide that changes it.