Initializing local properties
David Bovill
david.bovill at gmail.com
Wed Apr 15 14:39:42 EDT 2009
2009/4/15 Richard Gaskin <ambassador at fourthworld.com>
While we wait for the ability to initialize vars from a function call, a
> single Init handler in a behavior script may do the trick for now.
>
> If you used a script-local var as a flag to see if it's been initialized,
> you could ensure it's initialized only once even if called from a
> preOpenCard handler:
>
> local sInited
>
> on preOpenCard
> if sInited is empty then
> -- do initialization stuff
> put true into sInited
> end if
> pass preOpenCard
> end preOpenCard
Yes - but as in the example I gave the custom property is being called from
outside of the current stack - so no preOpenCard message is sent - and
unfortnuately we don't have any "load" type messages that we can trap when a
stack gets loaded into memory - only when it is opened.
I want the properties I define to be as close as possible to 100% bullet
proof - and callable from aywhere in the environment. A use case for
instance would be you have a library of a hundred view widgets - they are ot
laoded into memory but sitting on the local hard disk, and indexed in the
stackfiles. A script want to be able to get or set one of the views behavior
in a natural syntax - ie:
put the long id of grp 1 of stack "Outliner" into someView
> if the view_Type of someview is "tree" then addToIndex
> copy someView to this card
And not care if is already open or this is the first time it is opening -
there is nothing you can do about this other than load everything into
memory on startup - or call functions and getprops dynamically (which loses
the elegance and speed advantages of doing it once and loading it into a
local variable.
More information about the use-livecode
mailing list