use-revolution digest, Vol 1 #380 - 12 msgs
J. Landman Gay
jacque at hyperactivesw.com
Fri May 3 20:54:01 EDT 2002
Dar Scott wrote:
> I have been putting library-like scripts in groups. I'd like to
> consider library stacks. Would these be substacks if I want to
> include them in the same file? Or am I looking that the
> organization wrong?
>
> Would the main stack be in the message path twice? That is, both
> before the library stacks and after?
No, the main stack would only receive the message once, just after the
substack gets it (assuming the substack has been put in use.) Another
method that's ideal for library scripts is the "insert" command, which
places a script into the message hierarchy without needing to use a
separate stack. You can write a whole library of handlers and store it
in any available object's script. When you want to put the script into
use, you insert it:
insert script of <the object> into front
or: insert script of <the object> into back
The object can be anything that's handy and is simply used as a storage
place. Once inserted, the script acts as a layer in the message
hierarchy until you remove it or Rev quits. If a script is inserted into
the front, it gets all messages before anything else. For example,
clicking a button usually sends "mouseup" to the button first, and then
on through the hierarchy until the message reaches the Rev engine. If a
script is inserted into the front, the frontscript will receive the
"mouseup" message *before* the button does. This is a good technique for
something like painting tools, where you want to change the normal
behavior of a mouse event or some other action.
Scripts inserted into the back are similar to the scripts of stacks put
"in use" -- the script is inserted behind everything else, and doesn't
receive messages until almost the whole hierarchy has been traversed.
The difference between "insert into back" and "start using stack" is
that stacks in use receive messages before the Home stack gets them, and
scripts inserted into the back receive the message after the Home stack
gets them. In a standalone where there is no Home stack, both methods
are pretty much equivalent.
For library scripts, insertion is a good technique because it doesn't
require that you have a separate stack to store the script into. You can
store scripts intended for insertion inside hidden objects, properties,
unused cards, whatever. On the other hand, if you develop a spiffy
library and you want to distribute it to others, then putting it into a
stack that you can send to people is a good technique.
--
Jacqueline Landman Gay | jacque at hyperactivesw.com
HyperActive Software | http://www.hyperactivesw.com
More information about the use-livecode
mailing list