deletion while moving...
Igor Couto
igor at pixelmedia.com.au
Wed Dec 17 19:14:25 EST 2003
Hi all,
I have a button that has a rather long script, which includes things
like getting the button to move to different places in the card. This
script is recursive: when it gets to the end, it calls itself again. I
guess, a very simple example that illustrates roughly what is happening
would be something like this:
on mouseUp
move me relative 300,0 in 15 seconds
move me relative -300,0 in 15 seconds
send "mouseUp" to me in 1 tick
end mouseUp
The problem is that I also have to delete this object at certain times.
Hmmm, not as simple as it may look... If I try to delete a button while
it's moving, it tells me that I can't do that, because the object is
locked (I guess because its script is executing). So I guess all I need
to do is halt the script...
The first thing I tried was to place a 'flag' in the button (as a
custom property), that would advise the object when NOT to loop - and
then, to delete itself:
on mouseUp
if not(the cStopMoving of me) then move me relative 300,0 in 15 seconds
if not(the cStopMoving of me) then move me relative -300,0 in 15
seconds
if (the cStopMoving of me) then
send "delete me" to me in 10 ticks
else
send "mouseUp" to me in 1 tick
end if
end mouseUp
This approach had 2 problems: first, it didn't work (the button would
not delete itself in the end). Second, it meant that even after the
flag was set, I still had to WAIT until the movement was finished (15
seconds!) until the deletion was attempted.
So, I started trying to use a second button - a 'delete' button - to
try and STOP the movement of the first 'animated' button, and then do
the deletion on-the-spot.
The script in the first button now goes:
on mouseUp
move me relative 300,0 in 15 seconds
if not(the cStopMoving of me) then move me relative -300,0 in 15
seconds
if not(the cStopMoving of me) then send "mouseUp" to me in 1 tick
end mouseUp
The script in the 'delete' button goes:
on mouseUp
set the cStopMoving of button "animatedBtn" to true
stop moving button "animatedBtn"
delete button "animatedBtn"
end mouseUp
Hmmm, better results: now, the animated button DOES STOP moving
immediately, however, still NO DELETION!
Perhaps I need to give some time for the script of the 'animated'
button to do all its flag-checking, and run its course, before I try to
delete it - my thinking here is that I might be trying to delete the
button while it's locked because its script has not yet finished
executing. Ok, so I changed the 'delete' button script to:
on mouseUp
set the cStopMoving of button "animatedBtn" to true
stop moving button "animatedBtn"
put "delete" && the long id of button "animatedBtn" into lMessage
send lMessage to this stack in 1 second -- should be plenty of time!
end mouseUp
Guess what?: it still DOES NOT DELETE!!!
What gives?
I feel like I'm overseeing something basic...
Any help GREATLY appreciated!
Cheers,
Igor de Oliveira Couto
------------------------------
More information about the use-livecode
mailing list