Anything that you want to "remember" across event handlers needs to be stored in a widget. A true/false flag, for example, could be stored in a hidden checkbox. If we had a card named "flags" with a checkbox widget named "hasKey" your scripts might look something like
on click do flags.widgets.hasKey.value:1 go[bednokey] end ... on click do if flags.widgets.hasKey.value go[bednokey "SlideUp"] else go[bed "SlideUp"] end end
If the widget happens to be on the same card as the script which references it you can shorten paths like "flags.widgets.hasKey.value" to just "hasKey.value".
If you want to show or hide objects on a card, you may find it more flexible to use a transparent Canvas widget containing an image of the key. You can show, hide, or reposition canvases at will, sort of like a sprite object:
myCanvas.show:"solid" myCanvas.show:"transparent" myCanvas.show:"none" myCanvas.toggle["solid" booleanExpression] myCanvas.pos:otherWidget.pos
This may also remove the need for a separate "flag" widget; the canvas itself will remember its visibility setting:
if bed.widgets.keyCanvas.show~"none" # ... end
Does that help answer your question? There are lots of other examples of doing this sort of thing in this thread and elsewhere on the forum.