Exit Repeat
Mark Smith
mark at maseurope.net
Mon Mar 20 04:08:40 EST 2006
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 at 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 at 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 at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your
> subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-revolution
More information about the use-livecode
mailing list