Message: 7
Date: Fri, 23 Dec 2005 09:24:41 -0800
From: Jim Ault <[EMAIL PROTECTED]>
Subject: Re: Don't understand the meaning of "local"
To: How to use Revolution <[email protected]>
Message-ID: <[EMAIL PROTECTED]>
Content-Type: text/plain;       charset="US-ASCII"

 "Local" is a deceptive descriptor. It is used (as a script local) to
 control not only locality, but also persistence--it has both spacial
 and temporal implications.


Perhaps it is the terminology used in the docs.  More precisely, I think of
it as  *handler local, *script local, and *global to Rev variables.  The
handler local is the one that dies when exiting that handler.  This allows
the same variable name (eg. tempVar) to be used without carry-over.

Also, 'set the itemDel to space' only applies to that running handler.
Entering another starts with the default itemDel, so this is a 'handler
local' setting.  Important concept for front/back scripts and stacks in use

Globals are held by Rev and only die when either
delete variable gGlobalVar --is done
the user quits Revolution app.
This means that you could build a stack that is opened, sets some globals,
close with the 'destroyStack' as true, leaving the globals in RAM and
available to all stacks and sub stacks.

Obviously, the kinder, gentler stack design is to delete these variables on
closeStack.

Good questions.

Jim Ault
Las Vegas


Jim,

Good points.

The persistence of local SCRIPT variables that Chipp's earlier reply clears up for me is handlers calling themselves (in x millisec or whatever) in order to achieve asynchronous behavior ( i.e. not monopolizing CPU time and allowing other uses of the CPU to seek in.)

Unless the script remembers the local script variables (until the next compiling of the code) then on the next call the handler will not know what values to assign.

On way around this would be to include the value of the variable in the call. For example in the following script the send message tells the handler what the value of the variable should be after 20 millisec is up.

on mouseUp
  put "" into field 1
  checkPersistence 1
end mouseUp


on checkPersistence tNum
  if tNum > 10 then exit checkpersistence
  put tNum  into field 1
  send "checkPersistence tNum + 1" to me in 20 millisec
end checkPersistence

And there would be no need to include a script local variable.

But  if checkPersistence look like this:

on checkPersistence
  if tNum > 10 then exit checkpersistence
  put tNum  into field 1
  add 1 to tNum
  send "checkPersistence" to me in 20 millisec
end checkPersistence

It would not work unless tNum was declared earlier as a script local.

It's about time I'm getting these fundamental points straight. There is a danger in learning RR on an as-needed basis.

Jim
_______________________________________________
use-revolution mailing list
[email protected]
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to