Creating a reusable object

Timothy Bleiler bleiler at buffalo.edu
Wed Aug 8 09:04:40 EDT 2012


On Aug 8, 2012, at 12:34 AM, Mark Smith wrote:

> I make a new card. The graphic shows up (shouldn't have if I  
> understand
> "shared group" correctly). So, I try and delete the object from the  
> second
> card and it deletes it from the first card too.
> So, looks like I have a shared object that behaves like a  
> background, not a
> reusable object that responds to messages.
>
> Where did I screw up? Have tried this a few times and always get the  
> same
> result.

Setting BackgroundBehavior of a group to true does 2 major things.
1. When you create a new card, all of the groups on the current card  
whose backgroundBehavior is true will be placed on the new card. If  
you have a background group on multiple cards and want to remove it  
from one card but not others, you must select the group, then under  
the "Object" menu choose "Remove Group".  You add a group to a card   
by selecting the "Object" menu and choosing your group from the "Place  
Group" sub menu. Do NOT use copy and paste to put the group on  
multiple cards, you will be creating new unique controls.

2. The script of a group with backgroundBehavior set to true is  
processed AFTER the card EXCEPT for messages that pass through  
controls within the group. It can get very confusing. If you're going  
to use backgrounds I'd suggest you play around with it until you think  
you understand it before doing a lot of coding.

There have been long discussions over the years about how each of us  
models this in our own heads. I've never heard of one that is simple  
but complete. With that said, one way to think of it is that a group  
with backgroundBehavior set to true is somewhat independent of any  
given card. You might even think of it as another card between the  
card and the stack.  You can have more than one group as a background  
on a card and the order their scripts are processed in the message  
path depends on the groups number relative to the other controls on  
the CURRENT card. They could be in a different order on another card!!  
Definitely, it can be a little tricky to get your head around! This  
article by Richard Gaskin might be of some help getting started. http://www.fourthworld.com/embassy/articles/revolution_message_path.html

Another option is to have a shared control that behaves like any other  
control on a card i.e. its script is processed like a control on the  
card not after the card and is not automatically placed on new cards.  
In this case, do NOT set the backgroundBehavior to true but instead  
just set SharedBehavior to true. Then, to use the group on multiple  
cards, go to the card where you want to use the group, select the  
"Object" menu and choose your group from the "Place Group" sub menu.  
Do NOT use copy and paste to put the group on multiple cards, you will  
be creating new unique controls.

Any group placed on more than one card will have its SharedBehavior  
set to true regardless of the value of its backgroundBehavior property.


Good luck!

Tim Bleiler, Ph.D.
Instructional Designer, HSIT
University at Buffalo




More information about the Use-livecode mailing list