the dynamicPaths

Ken Ray kray at sonsothunder.com
Sun Aug 28 20:49:11 EDT 2011


>> If a stack's dynamicPaths property is true, when a handler in that stack uses the go or find command to go to a card other than the original card, that destination card's message path is inserted into the message path as long as the handler is on that card.
> 
> 
> "I see," said the blind man, to the deaf dog. This entry might benefit from a clarifying comment.
> 
> Can someone explain precisely the difference between hyperCard's "dynamic path behavior" and LiveCode's message path?

I looked this up to be sure (Jean DeVoto's got a diagram and explanation of the dynamic paths on this page: http://www.jaedworks.com/hypercard/HT-Masters/scripting.html - go to the section called "The Message Path"), but basically it goes like this:

Imagine you have a stack with two cards, and a button the first card. 

The script of card one is empty.

The script of card two is:

on DoIt
  answer "I'm on card 2"
end DoIt

The script of button on card 1 is:

on mouseUp
  go card 2
  DoIt
end mouseUp

In HyperCard (or if the dynamicPaths property is true in LiveCode), you'll click the button, go to card 2 and the answer box will say "I'm on card 2". If the dynamicPaths is false (the default) and you click the button, you go to card 2, but then get a "can't find handler" error dialog. This is because with the dynamicPaths turned *off*, LC will look in the normal message path (from the button you clicked's perspective) to find the handler "DoIt". Since it's not in the script of card 1 or in the stack script, you get the error dialog. Turn it on, and card 2's script hierarchy (card/background/stack) is inserted *between* the stack script and the libraries/backscripts/engine. So this would mean the message would go:

button 1 -> card 1 -> background(s) -> stack -> card 2 -> background(s) -> stack -> libraries/backscripts/etc -> Engine

Hope I have this right...

Ken Ray
Sons of Thunder Software, Inc.
Email: kray at sonsothunder.com
Web Site: http://www.sonsothunder.com/	




More information about the use-livecode mailing list