Animation Via Repeated Loop calls?
Scott Rossi
scott at tactilemedia.com
Fri May 13 20:20:55 EDT 2011
Hi John:
You really should use "send in..." to allow for interruptions of a loop.
Without knowing exactly what kind of motion you are trying to achieve,
here's how I would do it:
-- SINCE YOU ARE USING FIELD 1 AS A SWITCH,
-- YOU CAN TREAT IT AS SUCH, BEING EITHER ON (TRUE) OR OFF (FALSE)
-- IN THIS CASE ALL REFERENCES TO "FIELD 1" ARE
-- EITHER TRUE OR FALSE
local moveCount -- STORES THE NUMBER OF TIMES THE BALL HAS MOVED
on mouseUp
put not fld 1 into fld 1
if fld 1 then
put 0 into moveCount -- RESET THE LOOP COUNTER
moveTheBall
end if
end mouseUp
on moveTheBall
if not fld 1 or moveCount = 20 then exit moveTheBall
move grc 1 rel 0,10 -- MOVES THE BALL DOWN 10 PIX
add 1 to moveCount
send "moveTheBall" to me in 10 millisecs
end moveTheBall
The first line of moveTheBall will exit the handler if field 1 contains
"false" or if the number of move loops = 20. You should be able to
interrupt the ball's motion at any time thanks to the "send..." command at
the end of the handler.
Hope this helps.
Regards,
Scott Rossi
Creative Director
Tactile Media, UX Design
Recently, John Patten wrote:
> Hi All...
>
> I'm trying to get my head around the idea of using repeated loop to
> animate objects. These are probably pretty basic concepts, but I feel
> I need to get some basic understanding on things such as interrupting
> a loop, etc.
>
> For example,
>
> On a card there's a graphic object, a field and a button. The button
> contains the following script:
>
> on mouseUp
> if cd fld 1 is "True" then
> moveTheBall
> put "false" into cd fld 1
> else
> put "True" into cd fld 1
>
> end if
> end mouseUp
>
>
> on moveTheBall
> --put the loc of grc 1 into tCurrentBallLoc
> repeat 20
> add 10 to item 2 of tCurrentBallLoc
> move grc 1 to tCurrentBallLoc
> wait 25 milliseconds
> if cd fld 1 is "false" then
> exit moveTheBall
> end if
> end repeat
> end moveTheBall
>
> This animates the graphic object however my means to interrupt the
> loop don't quite cut it as the trigger doesn't get implemented until
> after the command.
>
> What would be the proper way to interrupt a repeat? Anybody of some
> simple examples of animating objects via loops?
>
> Thank you!
>
> John Patten
> SUSD
>
>
>
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription
> preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode
More information about the use-livecode
mailing list