In fact, I tested this, and it works. Though it'd still be cleaner, somehow, to be able to test for the exit condition within the loop.

Mark

On 20 Mar 2006, at 01:08, Geoff Canyon wrote:

Close, but I don't think this will work. The exit to top in the escapeKey handler will exit that handler, not the handlerWithRepeatIMightWantToInterrupt. Instead, set a custom property in the escapeKey handler, then check that property in your handlerWithRepeatIMightWantToInterrupt handler and exit there if it is set. My previous example did something like this with a local variable, but a custom property would work as well.

gc

On Mar 19, 2006, at 2:51 PM, Mark Smith wrote:

'wait 0 ticks with messages' was the thing - thanks!

So a general (stack-wide) approach might be to use a custom prop in the stack:

in a control, card or stack:
on handlerWithRepeatIMightWantToInterrupt
  set the canInterrupt of this stack to true
  repeat forever
    wait 0 ticks with messages
    doRepeatStuff
  end repeat
  set the canInterrupt of this stack to false
  otherStuff
end handlerWithRepeatIMightWantToInterrupt

then in the stack script

on escapeKey
  if the canInterrupt of me then
    set the canInterrupt of me to false
    exit to top
  end if
end escapeKey


Mark

On 19 Mar 2006, at 22:24, Geoff Canyon wrote:


On Mar 19, 2006, at 12:04 PM, Mark Smith wrote:

Andre, the trouble is that in the case of interrupting a repeat loop, you can't test for whether the escape key is down like you can with control/option/command.

So use control/option/command, of course :)
But the escape key would be more natural...

This works:

local sGetOut

on mouseUp
  put empty
  put false into sGetOut
  repeat 20000
    wait 0 ticks with messages
    if sGetOut then exit to top
  end repeat
  put "completed"
end mouseUp

on escapeKey
  put true into sGetOut
end escapeKey

Note that the escapeKey message is delivered to the focused control, so you can't put it in a button and expect it to work reliably. Put the above in the card script, then click anywhere in the card. Some time later "completed" will show in the message box. Then click the card again and then press the escape key. You won't get the "completed" text.

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

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


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

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

Reply via email to