Passing control away and back again

Paul Dupuis paul at researchware.com
Sun Feb 15 11:41:42 EST 2015


On 2/15/2015 10:02 AM, Graham Samuel wrote:
> But I do understand Paul's, which was very near the approach I was thinking of taking myself. I suppose I am still worried about the 'send'. Sending isn't calling, is it? I mean, in principle, a handler like "dopart2" in Paul's example will be executed, and then control will return to the script that executed the 'send', won't it? So we end up executing "end mouseUp" in the context of the button that was clicked, not the script that was running in the 'startUp' handler. Perhaps this doesn't matter, but this is the issue I'm trying to get my head around. Anyway it's a viable solution and I'm grateful.

send <message> to <object> -- is like a call. The handler waits until
message is executed before proceeding to the next statement

send <message> to <object> in <time> -- places the message in the
message queue and the handler continues. The message queue then invokes
the message in the allotted time.

So,

on mouseUp
  close this stack
  send "doPart2" to <main stack>
end mouseUp

will not do what you want as the send executes "doPart2" and the
completes the mouseUp, but

on mouseUp
  close this stack
  send "doPart2" to <main stack> in 10 milliseconds -- or some non-zero time
end mouseUp

causes doPart2 to execute in the context of the main stack AFTER the
mouseUp handler has completed.

If I recall correctly, Richard Gaskin produced an excellent short 1 or 2
page guide on message passing in LiveCode. A *must have* reference if
you're still learning all the ins and outs. It looks like he's expanded
it from the one I remember as well. See
http://www.fourthworld.com/embassy/articles/revolution_message_path.html





More information about the use-livecode mailing list